|
|
|
@ -34,6 +34,7 @@ use OCA\UserStatus\Exception\InvalidStatusTypeException;
|
|
|
|
|
use OCA\UserStatus\Exception\StatusMessageTooLongException;
|
|
|
|
|
use OCP\AppFramework\Db\DoesNotExistException;
|
|
|
|
|
use OCP\AppFramework\Utility\ITimeFactory;
|
|
|
|
|
use OCP\UserStatus\IUserStatus;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Class StatusService
|
|
|
|
@ -54,21 +55,15 @@ class StatusService {
|
|
|
|
|
/** @var EmojiService */
|
|
|
|
|
private $emojiService;
|
|
|
|
|
|
|
|
|
|
public const ONLINE = 'online';
|
|
|
|
|
public const AWAY = 'away';
|
|
|
|
|
public const DND = 'dnd';
|
|
|
|
|
public const INVISIBLE = 'invisible';
|
|
|
|
|
public const OFFLINE = 'offline';
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* List of priorities ordered by their priority
|
|
|
|
|
*/
|
|
|
|
|
public const PRIORITY_ORDERED_STATUSES = [
|
|
|
|
|
self::ONLINE,
|
|
|
|
|
self::AWAY,
|
|
|
|
|
self::DND,
|
|
|
|
|
self::INVISIBLE,
|
|
|
|
|
self::OFFLINE
|
|
|
|
|
IUserStatus::ONLINE,
|
|
|
|
|
IUserStatus::AWAY,
|
|
|
|
|
IUserStatus::DND,
|
|
|
|
|
IUserStatus::INVISIBLE,
|
|
|
|
|
IUserStatus::OFFLINE
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
@ -76,9 +71,9 @@ class StatusService {
|
|
|
|
|
* or UserLiveStatusEvents
|
|
|
|
|
*/
|
|
|
|
|
public const PERSISTENT_STATUSES = [
|
|
|
|
|
self::AWAY,
|
|
|
|
|
self::DND,
|
|
|
|
|
self::INVISIBLE,
|
|
|
|
|
IUserStatus::AWAY,
|
|
|
|
|
IUserStatus::DND,
|
|
|
|
|
IUserStatus::INVISIBLE,
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
/** @var int */
|
|
|
|
@ -200,7 +195,7 @@ class StatusService {
|
|
|
|
|
} catch (DoesNotExistException $ex) {
|
|
|
|
|
$userStatus = new UserStatus();
|
|
|
|
|
$userStatus->setUserId($userId);
|
|
|
|
|
$userStatus->setStatus(self::OFFLINE);
|
|
|
|
|
$userStatus->setStatus(IUserStatus::OFFLINE);
|
|
|
|
|
$userStatus->setStatusTimestamp(0);
|
|
|
|
|
$userStatus->setIsUserDefined(false);
|
|
|
|
|
}
|
|
|
|
@ -245,7 +240,7 @@ class StatusService {
|
|
|
|
|
} catch (DoesNotExistException $ex) {
|
|
|
|
|
$userStatus = new UserStatus();
|
|
|
|
|
$userStatus->setUserId($userId);
|
|
|
|
|
$userStatus->setStatus(self::OFFLINE);
|
|
|
|
|
$userStatus->setStatus(IUserStatus::OFFLINE);
|
|
|
|
|
$userStatus->setStatusTimestamp(0);
|
|
|
|
|
$userStatus->setIsUserDefined(false);
|
|
|
|
|
}
|
|
|
|
@ -287,7 +282,7 @@ class StatusService {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$userStatus->setStatus(self::OFFLINE);
|
|
|
|
|
$userStatus->setStatus(IUserStatus::OFFLINE);
|
|
|
|
|
$userStatus->setStatusTimestamp(0);
|
|
|
|
|
$userStatus->setIsUserDefined(false);
|
|
|
|
|
|
|
|
|
@ -343,7 +338,7 @@ class StatusService {
|
|
|
|
|
$clearAt = $status->getClearAt();
|
|
|
|
|
|
|
|
|
|
if ($status->getStatusTimestamp() < $this->timeFactory->getTime() - self::INVALIDATE_STATUS_THRESHOLD
|
|
|
|
|
&& (!$status->getIsUserDefined() || $status->getStatus() === self::ONLINE)) {
|
|
|
|
|
&& (!$status->getIsUserDefined() || $status->getStatus() === IUserStatus::ONLINE)) {
|
|
|
|
|
$this->cleanStatus($status);
|
|
|
|
|
}
|
|
|
|
|
if ($clearAt !== null && $clearAt < $this->timeFactory->getTime()) {
|
|
|
|
@ -360,7 +355,7 @@ class StatusService {
|
|
|
|
|
* @param UserStatus $status
|
|
|
|
|
*/
|
|
|
|
|
private function cleanStatus(UserStatus $status): void {
|
|
|
|
|
$status->setStatus(self::OFFLINE);
|
|
|
|
|
$status->setStatus(IUserStatus::OFFLINE);
|
|
|
|
|
$status->setStatusTimestamp($this->timeFactory->getTime());
|
|
|
|
|
$status->setIsUserDefined(false);
|
|
|
|
|
|
|
|
|
|