diff --git a/apps/files_sharing/appinfo/routes.php b/apps/files_sharing/appinfo/routes.php index ad3d11fc3a..1346e0c689 100644 --- a/apps/files_sharing/appinfo/routes.php +++ b/apps/files_sharing/appinfo/routes.php @@ -75,6 +75,11 @@ return [ 'url' => '/api/v1/shares', 'verb' => 'POST', ], + [ + 'name' => 'ShareAPI#pendingShares', + 'url' => '/api/v1/shares/pending', + 'verb' => 'GET', + ], [ 'name' => 'ShareAPI#getShare', 'url' => '/api/v1/shares/{id}', diff --git a/apps/files_sharing/lib/Controller/ShareAPIController.php b/apps/files_sharing/lib/Controller/ShareAPIController.php index 906eb82221..e7c9a41495 100644 --- a/apps/files_sharing/lib/Controller/ShareAPIController.php +++ b/apps/files_sharing/lib/Controller/ShareAPIController.php @@ -1079,6 +1079,36 @@ class ShareAPIController extends OCSController { return new DataResponse($this->formatShare($share)); } + /** + * @NoAdminRequired + */ + public function pendingShares(): DataResponse { + $pendingShares = []; + + $shareTypes = [ + IShare::TYPE_USER, + IShare::TYPE_GROUP + ]; + + foreach ($shareTypes as $shareType) { + $shares = $this->shareManager->getSharedWith($this->currentUser, $shareType, null, -1, 0); + + foreach ($shares as $share) { + if ($share->getStatus() === IShare::STATUS_PENDING || $share->getStatus() === IShare::STATUS_REJECTED) { + $pendingShares[] = $share; + } + } + } + + $result = array_map(function (IShare $share) { + return [ + 'id' => $share->getFullId(), + ]; + }, $pendingShares); + + return new DataResponse($result); + } + /** * @NoAdminRequired *