diff options
author | Anna Larch <anna@nextcloud.com> | 2024-01-17 16:15:15 +0100 |
---|---|---|
committer | Anna Larch <anna@nextcloud.com> | 2024-01-24 18:23:21 +0100 |
commit | e1b957e17bc0b588a24971f40553b3723584b2b0 (patch) | |
tree | bb2976a2c50bd87783b5410fbbbc76f64693eb44 /apps/user_status/lib | |
parent | 0f48549769e859275c0e676313f069b2833d797c (diff) | |
download | nextcloud-server-e1b957e17bc0b588a24971f40553b3723584b2b0.tar.gz nextcloud-server-e1b957e17bc0b588a24971f40553b3723584b2b0.zip |
fix(userstatus): CALL status should overwrite MEETING status
Signed-off-by: Anna Larch <anna@nextcloud.com>
Diffstat (limited to 'apps/user_status/lib')
-rw-r--r-- | apps/user_status/lib/Service/StatusService.php | 33 |
1 files changed, 24 insertions, 9 deletions
diff --git a/apps/user_status/lib/Service/StatusService.php b/apps/user_status/lib/Service/StatusService.php index c623262eec6..813f6b9d4e1 100644 --- a/apps/user_status/lib/Service/StatusService.php +++ b/apps/user_status/lib/Service/StatusService.php @@ -172,8 +172,6 @@ class StatusService { throw new InvalidStatusTypeException('Status-type "' . $status . '" is not supported'); } - - if ($statusTimestamp === null) { $statusTimestamp = $this->timeFactory->getTime(); } @@ -257,21 +255,38 @@ class StatusService { throw new InvalidMessageIdException('Message-Id "' . $messageId . '" is not supported'); } + try { + $userStatus = $this->mapper->findByUserId($userId); + } catch (DoesNotExistException $e) { + // We don't need to do anything + $userStatus = new UserStatus(); + $userStatus->setUserId($userId); + } + + // CALL trumps CALENDAR status, but we don't need to do anything but overwrite the message + if ($userStatus->getMessageId() === IUserStatus::MESSAGE_CALENDAR_BUSY && $messageId === IUserStatus::MESSAGE_CALL) { + $userStatus->setStatus($status); + $userStatus->setStatusTimestamp($this->timeFactory->getTime()); + $userStatus->setIsUserDefined(true); + $userStatus->setIsBackup(false); + $userStatus->setMessageId($messageId); + $userStatus->setCustomIcon(null); + $userStatus->setCustomMessage($customMessage); + $userStatus->setClearAt(null); + $userStatus->setStatusMessageTimestamp($this->timeFactory->now()->getTimestamp()); + return $this->mapper->update($userStatus); + } + if ($createBackup) { if ($this->backupCurrentStatus($userId) === false) { return null; // Already a status set automatically => abort. } // If we just created the backup + // we need to create a new status to insert + // Unfortunatley there's no way to unset the DB ID on an Entity $userStatus = new UserStatus(); $userStatus->setUserId($userId); - } else { - try { - $userStatus = $this->mapper->findByUserId($userId); - } catch (DoesNotExistException $ex) { - $userStatus = new UserStatus(); - $userStatus->setUserId($userId); - } } $userStatus->setStatus($status); |