]> source.dussan.org Git - nextcloud-server.git/commitdiff
feat(user_status): Add online status type for OpenAPI 42527/head
authorprovokateurin <kate@provokateurin.de>
Fri, 29 Dec 2023 17:11:35 +0000 (18:11 +0100)
committerprovokateurin <kate@provokateurin.de>
Wed, 10 Jan 2024 08:03:29 +0000 (09:03 +0100)
Signed-off-by: provokateurin <kate@provokateurin.de>
apps/user_status/lib/Controller/StatusesController.php
apps/user_status/lib/Controller/UserStatusController.php
apps/user_status/lib/ResponseDefinitions.php
apps/user_status/openapi.json

index ff9008d1b708a45c3059aac57a165071816fa6ba..b506a691a61370eebde6985664d7c12dfb87f3e2 100644 (file)
@@ -39,6 +39,7 @@ use OCP\IRequest;
 use OCP\UserStatus\IUserStatus;
 
 /**
+ * @psalm-import-type UserStatusType from ResponseDefinitions
  * @psalm-import-type UserStatusPublic from ResponseDefinitions
  */
 class StatusesController extends OCSController {
@@ -105,6 +106,7 @@ class StatusesController extends OCSController {
         * @return UserStatusPublic
         */
        private function formatStatus(UserStatus $status): array {
+               /** @var UserStatusType $visibleStatus */
                $visibleStatus = $status->getStatus();
                if ($visibleStatus === IUserStatus::INVISIBLE) {
                        $visibleStatus = IUserStatus::OFFLINE;
index 3beb8abc3abd0db2e5865f2dc2d0b57119d53faf..053b07664a50d2b8b303b7ddbe898cf48af59e4d 100644 (file)
@@ -47,6 +47,7 @@ use OCP\IRequest;
 use Psr\Log\LoggerInterface;
 
 /**
+ * @psalm-import-type UserStatusType from ResponseDefinitions
  * @psalm-import-type UserStatusPrivate from ResponseDefinitions
  */
 class UserStatusController extends OCSController {
@@ -207,6 +208,8 @@ class UserStatusController extends OCSController {
         * @return UserStatusPrivate
         */
        private function formatStatus(UserStatus $status): array {
+               /** @var UserStatusType $visibleStatus */
+               $visibleStatus = $status->getStatus();
                return [
                        'userId' => $status->getUserId(),
                        'message' => $status->getCustomMessage(),
@@ -214,7 +217,7 @@ class UserStatusController extends OCSController {
                        'messageIsPredefined' => $status->getMessageId() !== null,
                        'icon' => $status->getCustomIcon(),
                        'clearAt' => $status->getClearAt(),
-                       'status' => $status->getStatus(),
+                       'status' => $visibleStatus,
                        'statusIsUserDefined' => $status->getIsUserDefined(),
                ];
        }
index f73e5f3b0d9aaaa48a01714e1d69ec1b4566f019..b5855b395380bc7a1774b94acd7f1d496ccb4d0e 100644 (file)
@@ -42,12 +42,14 @@ namespace OCA\UserStatus;
  *     visible: ?bool,
  * }
  *
+ * @psalm-type UserStatusType = "online"|"away"|"dnd"|"busy"|"offline"|"invisible"
+ *
  * @psalm-type UserStatusPublic = array{
  *     userId: string,
  *     message: ?string,
  *     icon: ?string,
  *     clearAt: ?int,
- *     status: string,
+ *     status: UserStatusType,
  * }
  *
  * @psalm-type UserStatusPrivate = UserStatusPublic&array{
index 0688f644a4367dec550cc3b93af456beb80a4c2e..2d76f8760ee26d654df421397280745336f07605 100644 (file)
                         "nullable": true
                     },
                     "status": {
-                        "type": "string"
+                        "$ref": "#/components/schemas/Type"
                     }
                 }
+            },
+            "Type": {
+                "type": "string",
+                "enum": [
+                    "online",
+                    "away",
+                    "dnd",
+                    "busy",
+                    "offline",
+                    "invisible"
+                ]
             }
         }
     },