Add status automation

Signed-off-by: Joas Schilling <coding@schilljs.com>
pull/32576/head
Joas Schilling 4 years ago
parent fdcf3eafd6
commit 5dee54d70b
No known key found for this signature in database
GPG Key ID: 7076EA9751AACDDA
  1. 14
      apps/dav/lib/BackgroundJob/UserStatusAutomation.php
  2. 12
      lib/public/UserStatus/IUserStatus.php

@ -31,6 +31,8 @@ use OCP\BackgroundJob\TimedJob;
use OCP\DB\QueryBuilder\IQueryBuilder;
use OCP\IConfig;
use OCP\IDBConnection;
use OCP\UserStatus\IManager;
use OCP\UserStatus\IUserStatus;
use Psr\Log\LoggerInterface;
use Sabre\VObject\Component\Available;
use Sabre\VObject\Component\VAvailability;
@ -41,17 +43,20 @@ class UserStatusAutomation extends TimedJob {
protected IDBConnection $connection;
protected IJobList $jobList;
protected LoggerInterface $logger;
protected IManager $manager;
protected IConfig $config;
public function __construct(ITimeFactory $timeFactory,
IDBConnection $connection,
IJobList $jobList,
LoggerInterface $logger,
IManager $manager,
IConfig $config) {
parent::__construct($timeFactory);
$this->connection = $connection;
$this->jobList = $jobList;
$this->logger = $logger;
$this->manager = $manager;
$this->config = $config;
// Interval 0 might look weird, but the last_checked is always moved
@ -138,8 +143,13 @@ class UserStatusAutomation extends TimedJob {
$nextAutomaticToggle = min($nextPotentialToggles);
$this->setLastRunToNextToggleTime($userId, $nextAutomaticToggle - 1);
// FIXME Currently available so disable DND
$isCurrentlyAvailable = (bool)$isCurrentlyAvailable;
if ($isCurrentlyAvailable) {
$this->manager->revertUserStatus($userId, IUserStatus::MESSAGE_AVAILABILITY, IUserStatus::DND);
} else {
// The DND status automation is more important than the "Away - In call" so we also restore that one if it exists.
$this->manager->revertUserStatus($userId, IUserStatus::MESSAGE_CALL, IUserStatus::AWAY);
$this->manager->setUserStatus($userId, IUserStatus::MESSAGE_AVAILABILITY, IUserStatus::DND, true);
}
$this->logger->debug('User status automation ran');
}

@ -64,6 +64,18 @@ interface IUserStatus {
*/
public const INVISIBLE = 'invisible';
/**
* @var string
* @since 25.0.0
*/
public const MESSAGE_CALL = 'call';
/**
* @var string
* @since 25.0.0
*/
public const MESSAGE_AVAILABILITY = 'availability';
/**
* Get the user this status is connected to
*

Loading…
Cancel
Save