aboutsummaryrefslogtreecommitdiffstats
path: root/apps/user_status/lib
diff options
context:
space:
mode:
Diffstat (limited to 'apps/user_status/lib')
-rw-r--r--apps/user_status/lib/Controller/StatusesController.php4
-rw-r--r--apps/user_status/lib/Controller/UserStatusController.php4
-rw-r--r--apps/user_status/lib/Service/StatusService.php28
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 {