diff options
Diffstat (limited to 'apps/user_status/lib')
-rw-r--r-- | apps/user_status/lib/Controller/StatusesController.php | 4 | ||||
-rw-r--r-- | apps/user_status/lib/Controller/UserStatusController.php | 4 | ||||
-rw-r--r-- | apps/user_status/lib/Service/StatusService.php | 28 |
3 files changed, 21 insertions, 15 deletions
diff --git a/apps/user_status/lib/Controller/StatusesController.php b/apps/user_status/lib/Controller/StatusesController.php index 56dbeb4f7a5..d30389e1716 100644 --- a/apps/user_status/lib/Controller/StatusesController.php +++ b/apps/user_status/lib/Controller/StatusesController.php @@ -87,10 +87,8 @@ class StatusesController extends OCSController { } /** - * @NoAdminRequired - * * @param UserStatus $status - * @return array + * @return array{userId: string, message: string, icon: string, clearAt: int, status: string} */ private function formatStatus(UserStatus $status): array { $visibleStatus = $status->getStatus(); diff --git a/apps/user_status/lib/Controller/UserStatusController.php b/apps/user_status/lib/Controller/UserStatusController.php index a231103e91e..8708a7c2aac 100644 --- a/apps/user_status/lib/Controller/UserStatusController.php +++ b/apps/user_status/lib/Controller/UserStatusController.php @@ -99,6 +99,8 @@ class UserStatusController extends OCSController { public function setStatus(string $statusType): DataResponse { try { $status = $this->service->setStatus($this->userId, $statusType, null, true); + + $this->service->removeBackupUserStatus($this->userId); return new DataResponse($this->formatStatus($status)); } catch (InvalidStatusTypeException $ex) { $this->logger->debug('New user-status for "' . $this->userId . '" was rejected due to an invalid status type "' . $statusType . '"'); @@ -118,6 +120,7 @@ class UserStatusController extends OCSController { ?int $clearAt): DataResponse { try { $status = $this->service->setPredefinedMessage($this->userId, $messageId, $clearAt); + $this->service->removeBackupUserStatus($this->userId); return new DataResponse($this->formatStatus($status)); } catch (InvalidClearAtException $ex) { $this->logger->debug('New user-status for "' . $this->userId . '" was rejected due to an invalid clearAt value "' . $clearAt . '"'); @@ -147,6 +150,7 @@ class UserStatusController extends OCSController { $this->service->clearMessage($this->userId); $status = $this->service->findByUserId($this->userId); } + $this->service->removeBackupUserStatus($this->userId); return new DataResponse($this->formatStatus($status)); } catch (InvalidClearAtException $ex) { $this->logger->debug('New user-status for "' . $this->userId . '" was rejected due to an invalid clearAt value "' . $clearAt . '"'); diff --git a/apps/user_status/lib/Service/StatusService.php b/apps/user_status/lib/Service/StatusService.php index 655c37da9cc..ad50a541a00 100644 --- a/apps/user_status/lib/Service/StatusService.php +++ b/apps/user_status/lib/Service/StatusService.php @@ -346,9 +346,21 @@ class StatusService { * @param string $userId * @return bool */ - public function removeUserStatus(string $userId, bool $isBackup = false): bool { + public function removeUserStatus(string $userId): bool { try { - $userStatus = $this->mapper->findByUserId($userId, $isBackup); + $userStatus = $this->mapper->findByUserId($userId, false); + } catch (DoesNotExistException $ex) { + // if there is no status to remove, just return + return false; + } + + $this->mapper->delete($userStatus); + return true; + } + + public function removeBackupUserStatus(string $userId): bool { + try { + $userStatus = $this->mapper->findByUserId($userId, true); } catch (DoesNotExistException $ex) { // if there is no status to remove, just return return false; @@ -448,20 +460,12 @@ class StatusService { return true; } - public function revertUserStatus(string $userId, string $messageId, string $status): void { + public function revertUserStatus(string $userId, ?string $messageId, string $status): void { try { /** @var UserStatus $userStatus */ $backupUserStatus = $this->mapper->findByUserId($userId, true); } catch (DoesNotExistException $ex) { - // No backup, just move back to available - try { - $userStatus = $this->mapper->findByUserId($userId); - } catch (DoesNotExistException $ex) { - // No backup nor current status => ignore - return; - } - $this->cleanStatus($userStatus); - $this->cleanStatusMessage($userStatus); + // No user status to revert, do nothing return; } try { |