aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnna Larch <anna@nextcloud.com>2023-12-15 11:07:09 +0100
committerAnna Larch <anna@nextcloud.com>2023-12-18 11:35:00 +0100
commitfc4ef6133b6f236a9eb56d7c302eeb43b9d07e9d (patch)
tree64ef84c779ce39488b99456d30cfc5edb3c5f4cc
parent0ff674607f1bbf108d4318a8844f7d3f7e7a2cd6 (diff)
downloadnextcloud-server-fc4ef6133b6f236a9eb56d7c302eeb43b9d07e9d.tar.gz
nextcloud-server-fc4ef6133b6f236a9eb56d7c302eeb43b9d07e9d.zip
fix(ooo): add new ooo status with new emoji
Signed-off-by: Anna Larch <anna@nextcloud.com>
-rw-r--r--apps/dav/lib/BackgroundJob/UserStatusAutomation.php8
-rw-r--r--apps/dav/tests/unit/BackgroundJob/UserStatusAutomationTest.php2
-rw-r--r--apps/user_status/lib/Listener/OutOfOfficeStatusListener.php2
-rw-r--r--apps/user_status/lib/Service/PredefinedStatusService.php15
-rw-r--r--apps/user_status/tests/Unit/Service/PredefinedStatusServiceTest.php11
-rw-r--r--lib/public/UserStatus/IUserStatus.php6
6 files changed, 36 insertions, 8 deletions
diff --git a/apps/dav/lib/BackgroundJob/UserStatusAutomation.php b/apps/dav/lib/BackgroundJob/UserStatusAutomation.php
index 60c53e9bd08..5f88fa122b7 100644
--- a/apps/dav/lib/BackgroundJob/UserStatusAutomation.php
+++ b/apps/dav/lib/BackgroundJob/UserStatusAutomation.php
@@ -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());
diff --git a/apps/dav/tests/unit/BackgroundJob/UserStatusAutomationTest.php b/apps/dav/tests/unit/BackgroundJob/UserStatusAutomationTest.php
index fe6919d8dae..ad92df238f0 100644
--- a/apps/dav/tests/unit/BackgroundJob/UserStatusAutomationTest.php
+++ b/apps/dav/tests/unit/BackgroundJob/UserStatusAutomationTest.php
@@ -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')
diff --git a/apps/user_status/lib/Listener/OutOfOfficeStatusListener.php b/apps/user_status/lib/Listener/OutOfOfficeStatusListener.php
index 0d793c3f306..087446d94a7 100644
--- a/apps/user_status/lib/Listener/OutOfOfficeStatusListener.php
+++ b/apps/user_status/lib/Listener/OutOfOfficeStatusListener.php
@@ -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;
}
diff --git a/apps/user_status/lib/Service/PredefinedStatusService.php b/apps/user_status/lib/Service/PredefinedStatusService.php
index c77ca588ebb..a80f5230001 100644
--- a/apps/user_status/lib/Service/PredefinedStatusService.php
+++ b/apps/user_status/lib/Service/PredefinedStatusService.php
@@ -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,
diff --git a/apps/user_status/tests/Unit/Service/PredefinedStatusServiceTest.php b/apps/user_status/tests/Unit/Service/PredefinedStatusServiceTest.php
index 0a65256bfac..c6850621dd8 100644
--- a/apps/user_status/tests/Unit/Service/PredefinedStatusServiceTest.php
+++ b/apps/user_status/tests/Unit/Service/PredefinedStatusServiceTest.php
@@ -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'],
diff --git a/lib/public/UserStatus/IUserStatus.php b/lib/public/UserStatus/IUserStatus.php
index f5005e5616b..f167f9a82ee 100644
--- a/lib/public/UserStatus/IUserStatus.php
+++ b/lib/public/UserStatus/IUserStatus.php
@@ -83,6 +83,12 @@ interface IUserStatus {
/**
* @var string
+ * @since 28.0.1
+ */
+ public const MESSAGE_OUT_OF_OFFICE = 'out-of-office';
+
+ /**
+ * @var string
* @since 28.0.0
*/
public const MESSAGE_VACATION = 'vacationing';