mirror of https://github.com/nextcloud/server
fix(ooo): add new ooo status with new emoji
Signed-off-by: Anna Larch <anna@nextcloud.com>
This commit is contained in:
parent
0ff674607f
commit
fc4ef6133b
|
@ -89,7 +89,7 @@ class UserStatusAutomation extends TimedJob {
|
|||
$this->logger->info('Removing ' . self::class . ' background job for user "' . $userId . '" because the user has no valid availability rules and no OOO data set');
|
||||
$this->jobList->remove(self::class, $argument);
|
||||
$this->manager->revertUserStatus($user->getUID(), IUserStatus::MESSAGE_AVAILABILITY, IUserStatus::DND);
|
||||
$this->manager->revertUserStatus($user->getUID(), IUserStatus::MESSAGE_VACATION, IUserStatus::DND);
|
||||
$this->manager->revertUserStatus($user->getUID(), IUserStatus::MESSAGE_OUT_OF_OFFICE, IUserStatus::DND);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -227,7 +227,7 @@ class UserStatusAutomation extends TimedJob {
|
|||
if(empty($ooo)) {
|
||||
// Reset the user status if the absence doesn't exist
|
||||
$this->logger->debug('User has no OOO period in effect, reverting DND status if applicable');
|
||||
$this->manager->revertUserStatus($user->getUID(), IUserStatus::MESSAGE_VACATION, IUserStatus::DND);
|
||||
$this->manager->revertUserStatus($user->getUID(), IUserStatus::MESSAGE_OUT_OF_OFFICE, IUserStatus::DND);
|
||||
// We need to also run the availability automation
|
||||
return true;
|
||||
}
|
||||
|
@ -235,7 +235,7 @@ class UserStatusAutomation extends TimedJob {
|
|||
if(!$this->coordinator->isInEffect($ooo)) {
|
||||
// Reset the user status if the absence is (no longer) in effect
|
||||
$this->logger->debug('User has no OOO period in effect, reverting DND status if applicable');
|
||||
$this->manager->revertUserStatus($user->getUID(), IUserStatus::MESSAGE_VACATION, IUserStatus::DND);
|
||||
$this->manager->revertUserStatus($user->getUID(), IUserStatus::MESSAGE_OUT_OF_OFFICE, IUserStatus::DND);
|
||||
|
||||
if($ooo->getStartDate() > $this->time->getTime()) {
|
||||
// Set the next run to take place at the start of the ooo period if it is in the future
|
||||
|
@ -250,7 +250,7 @@ class UserStatusAutomation extends TimedJob {
|
|||
// Revert both a possible 'CALL - away' and 'office hours - DND' status
|
||||
$this->manager->revertUserStatus($user->getUID(), IUserStatus::MESSAGE_CALL, IUserStatus::DND);
|
||||
$this->manager->revertUserStatus($user->getUID(), IUserStatus::MESSAGE_AVAILABILITY, IUserStatus::DND);
|
||||
$this->manager->setUserStatus($user->getUID(), IUserStatus::MESSAGE_VACATION, IUserStatus::DND, true, $ooo->getShortMessage());
|
||||
$this->manager->setUserStatus($user->getUID(), IUserStatus::MESSAGE_OUT_OF_OFFICE, IUserStatus::DND, true, $ooo->getShortMessage());
|
||||
// Run at the end of an ooo period to return to availability / regular user status
|
||||
// If it's overwritten by a custom status in the meantime, there's nothing we can do about it
|
||||
$this->setLastRunToNextToggleTime($user->getUID(), $ooo->getEndDate());
|
||||
|
|
|
@ -228,7 +228,7 @@ END:VCALENDAR');
|
|||
->method('revertUserStatus');
|
||||
$this->statusManager->expects(self::once())
|
||||
->method('setUserStatus')
|
||||
->with('user', IUserStatus::MESSAGE_VACATION, IUserStatus::DND, true, $ooo->getShortMessage());
|
||||
->with('user', IUserStatus::MESSAGE_OUT_OF_OFFICE, IUserStatus::DND, true, $ooo->getShortMessage());
|
||||
$this->config->expects(self::never())
|
||||
->method('getUserValue');
|
||||
$this->time->method('getDateTime')
|
||||
|
|
|
@ -53,7 +53,7 @@ class OutOfOfficeStatusListener implements IEventListener {
|
|||
*/
|
||||
public function handle(Event $event): void {
|
||||
if($event instanceof OutOfOfficeClearedEvent) {
|
||||
$this->manager->revertUserStatus($event->getData()->getUser()->getUID(), IUserStatus::MESSAGE_VACATION, IUserStatus::DND);
|
||||
$this->manager->revertUserStatus($event->getData()->getUser()->getUID(), IUserStatus::MESSAGE_OUT_OF_OFFICE, IUserStatus::DND);
|
||||
$this->jobsList->scheduleAfter(UserStatusAutomation::class, $this->time->getTime(), ['userId' => $event->getData()->getUser()->getUID()]);
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -46,6 +46,7 @@ class PredefinedStatusService {
|
|||
* @deprecated See \OCP\UserStatus\IUserStatus::MESSAGE_CALL
|
||||
*/
|
||||
public const CALL = 'call';
|
||||
public const OUT_OF_OFFICE = 'out-of-office';
|
||||
|
||||
/** @var IL10N */
|
||||
private $l10n;
|
||||
|
@ -113,6 +114,13 @@ class PredefinedStatusService {
|
|||
'clearAt' => null,
|
||||
'visible' => false,
|
||||
],
|
||||
[
|
||||
'id' => self::OUT_OF_OFFICE,
|
||||
'icon' => '🛑',
|
||||
'message' => $this->getTranslatedStatusForId(self::OUT_OF_OFFICE),
|
||||
'clearAt' => null,
|
||||
'visible' => false,
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
|
@ -148,6 +156,9 @@ class PredefinedStatusService {
|
|||
case self::VACATIONING:
|
||||
return '🌴';
|
||||
|
||||
case self::OUT_OF_OFFICE:
|
||||
return '🛑';
|
||||
|
||||
case self::REMOTE_WORK:
|
||||
return '🏡';
|
||||
|
||||
|
@ -178,6 +189,9 @@ class PredefinedStatusService {
|
|||
case self::VACATIONING:
|
||||
return $this->l10n->t('Vacationing');
|
||||
|
||||
case self::OUT_OF_OFFICE:
|
||||
return $this->l10n->t('Out of office');
|
||||
|
||||
case self::REMOTE_WORK:
|
||||
return $this->l10n->t('Working remotely');
|
||||
|
||||
|
@ -199,6 +213,7 @@ class PredefinedStatusService {
|
|||
self::COMMUTING,
|
||||
self::SICK_LEAVE,
|
||||
self::VACATIONING,
|
||||
self::OUT_OF_OFFICE,
|
||||
self::REMOTE_WORK,
|
||||
IUserStatus::MESSAGE_CALL,
|
||||
IUserStatus::MESSAGE_AVAILABILITY,
|
||||
|
|
|
@ -47,7 +47,7 @@ class PredefinedStatusServiceTest extends TestCase {
|
|||
}
|
||||
|
||||
public function testGetDefaultStatuses(): void {
|
||||
$this->l10n->expects($this->exactly(6))
|
||||
$this->l10n->expects($this->exactly(7))
|
||||
->method('t')
|
||||
->withConsecutive(
|
||||
['In a meeting'],
|
||||
|
@ -110,6 +110,13 @@ class PredefinedStatusServiceTest extends TestCase {
|
|||
'clearAt' => null,
|
||||
'visible' => false,
|
||||
],
|
||||
[
|
||||
'id' => 'out-of-office',
|
||||
'icon' => '🛑',
|
||||
'message' => 'Out of office',
|
||||
'clearAt' => null,
|
||||
'visible' => false,
|
||||
],
|
||||
], $actual);
|
||||
}
|
||||
|
||||
|
@ -195,7 +202,7 @@ class PredefinedStatusServiceTest extends TestCase {
|
|||
}
|
||||
|
||||
public function testGetDefaultStatusById(): void {
|
||||
$this->l10n->expects($this->exactly(6))
|
||||
$this->l10n->expects($this->exactly(7))
|
||||
->method('t')
|
||||
->withConsecutive(
|
||||
['In a meeting'],
|
||||
|
|
|
@ -81,6 +81,12 @@ interface IUserStatus {
|
|||
*/
|
||||
public const MESSAGE_AVAILABILITY = 'availability';
|
||||
|
||||
/**
|
||||
* @var string
|
||||
* @since 28.0.1
|
||||
*/
|
||||
public const MESSAGE_OUT_OF_OFFICE = 'out-of-office';
|
||||
|
||||
/**
|
||||
* @var string
|
||||
* @since 28.0.0
|
||||
|
|
Loading…
Reference in New Issue