aboutsummaryrefslogtreecommitdiffstats
path: root/apps/user_status/lib/Controller/PredefinedStatusController.php
diff options
context:
space:
mode:
Diffstat (limited to 'apps/user_status/lib/Controller/PredefinedStatusController.php')
-rw-r--r--apps/user_status/lib/Controller/PredefinedStatusController.php57
1 files changed, 57 insertions, 0 deletions
diff --git a/apps/user_status/lib/Controller/PredefinedStatusController.php b/apps/user_status/lib/Controller/PredefinedStatusController.php
new file mode 100644
index 00000000000..70262d1108a
--- /dev/null
+++ b/apps/user_status/lib/Controller/PredefinedStatusController.php
@@ -0,0 +1,57 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+namespace OCA\UserStatus\Controller;
+
+use OCA\UserStatus\ResponseDefinitions;
+use OCA\UserStatus\Service\PredefinedStatusService;
+use OCP\AppFramework\Http;
+use OCP\AppFramework\Http\Attribute\ApiRoute;
+use OCP\AppFramework\Http\Attribute\NoAdminRequired;
+use OCP\AppFramework\Http\DataResponse;
+use OCP\AppFramework\OCSController;
+use OCP\IRequest;
+
+/**
+ * @package OCA\UserStatus\Controller
+ *
+ * @psalm-import-type UserStatusPredefined from ResponseDefinitions
+ */
+class PredefinedStatusController extends OCSController {
+
+ /**
+ * AStatusController constructor.
+ *
+ * @param string $appName
+ * @param IRequest $request
+ * @param PredefinedStatusService $predefinedStatusService
+ */
+ public function __construct(
+ string $appName,
+ IRequest $request,
+ private PredefinedStatusService $predefinedStatusService,
+ ) {
+ parent::__construct($appName, $request);
+ }
+
+ /**
+ * Get all predefined messages
+ *
+ * @return DataResponse<Http::STATUS_OK, list<UserStatusPredefined>, array{}>
+ *
+ * 200: Predefined statuses returned
+ */
+ #[NoAdminRequired]
+ #[ApiRoute(verb: 'GET', url: '/api/v1/predefined_statuses/')]
+ public function findAll():DataResponse {
+ // Filtering out the invisible one, that should only be set by API
+ return new DataResponse(array_values(array_filter($this->predefinedStatusService->getDefaultStatuses(), function (array $status) {
+ return !array_key_exists('visible', $status) || $status['visible'] === true;
+ })));
+ }
+}