diff --git a/lib/Controller/WorkspaceController.php b/lib/Controller/WorkspaceController.php index 1551db69a47..6d3ab10f0a6 100644 --- a/lib/Controller/WorkspaceController.php +++ b/lib/Controller/WorkspaceController.php @@ -60,6 +60,7 @@ use OCP\Files\Folder; use OCP\Files\IRootFolder; use OCP\Files\NotFoundException; +use OCP\Files\StorageNotAvailableException; use OCP\IRequest; use OCP\IURLGenerator; use OCP\Share\Exceptions\ShareNotFound; @@ -134,6 +135,8 @@ public function folder(string $path = '/'): DataResponse { } } catch (NotFoundException $e) { return new DataResponse(['message' => 'No valid folder found'], Http::STATUS_BAD_REQUEST); + } catch (StorageNotAvailableException $e) { + return new DataResponse(['message' => $e->getMessage()], Http::STATUS_INTERNAL_SERVER_ERROR); } } @@ -167,6 +170,8 @@ public function publicFolder(string $shareToken, string $path = '/'): DataRespon return new DataResponse(['message' => 'No valid folder found'], Http::STATUS_BAD_REQUEST); } catch (ShareNotFound $e) { return new DataResponse(['message' => 'No valid folder found'], Http::STATUS_BAD_REQUEST); + } catch (StorageNotAvailableException $e) { + return new DataResponse(['message' => $e->getMessage()], Http::STATUS_INTERNAL_SERVER_ERROR); } } diff --git a/lib/DAV/WorkspacePlugin.php b/lib/DAV/WorkspacePlugin.php index c39b5b3645b..79a8a393abf 100644 --- a/lib/DAV/WorkspacePlugin.php +++ b/lib/DAV/WorkspacePlugin.php @@ -31,6 +31,7 @@ use OCA\Text\AppInfo\Application; use OCA\Text\Service\WorkspaceService; use OCP\Files\IRootFolder; +use OCP\Files\StorageNotAvailableException; use OCP\IConfig; use Sabre\DAV\INode; use Sabre\DAV\PropFind; @@ -98,9 +99,13 @@ public function propFind(PropFind $propFind, INode $node) { $nodes = $this->rootFolder->getUserFolder($this->userId)->getById($node->getId()); if (count($nodes) > 0) { /** @var File $file */ - $file = $this->workspaceService->getFile($nodes[0]); - if ($file instanceof File) { - return $file->getContent(); + try { + $file = $this->workspaceService->getFile($nodes[0]); + if ($file instanceof File) { + return $file->getContent(); + } + } catch (StorageNotAvailableException $e) { + // If a storage is not available we can for the propfind response assume that there is no rich workspace present } } return ''; diff --git a/lib/Service/WorkspaceService.php b/lib/Service/WorkspaceService.php index 5e4ff75e7db..819900745dc 100644 --- a/lib/Service/WorkspaceService.php +++ b/lib/Service/WorkspaceService.php @@ -6,6 +6,7 @@ use OCP\Files\Folder; use OCP\Files\NotFoundException; +use OCP\Files\StorageNotAvailableException; use OCP\IL10N; class WorkspaceService { @@ -25,6 +26,7 @@ public function __construct(IL10N $l10n) { /** * @param Folder $folder + * @throws StorageNotAvailableException * @return \OCP\Files\File */ public function getFile(Folder $folder) {