From f9061fb6179914060e3bfba553b013b238ba04ab Mon Sep 17 00:00:00 2001 From: codewithvk Date: Mon, 27 Jan 2025 17:57:58 +0530 Subject: [PATCH] fix(settings): fetch directory from root folder Signed-off-by: codewithvk --- lib/Service/SettingsService.php | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/lib/Service/SettingsService.php b/lib/Service/SettingsService.php index fe9c2542d4..c954dc8604 100644 --- a/lib/Service/SettingsService.php +++ b/lib/Service/SettingsService.php @@ -8,10 +8,12 @@ namespace OCA\Richdocuments\Service; +use OC\Files\Node\Folder; use OCA\Richdocuments\AppInfo\Application; use OCA\Richdocuments\Db\WopiMapper; use OCA\Richdocuments\WOPI\SettingsUrl; use OCP\Files\IAppData; +use OCP\Files\IRootFolder; use OCP\Files\NotFoundException; use OCP\Files\NotPermittedException; use OCP\Files\SimpleFS\ISimpleFile; @@ -41,6 +43,7 @@ public function __construct( private CapabilitiesService $capabilitiesService, private WopiMapper $wopiMapper, private IGroupManager $groupManager, + private IRootFolder $rootFolder, ) { // Create a distributed cache for caching file lists $this->cache = $cacheFactory->createDistributed(Application::APPNAME); @@ -178,10 +181,9 @@ public function generateSettingsConfig(string $type): array { private function getAllCategories(string $type): array { try { $categories = []; - $folder = $this->appData->getFolder($type); - $directories = $folder->getFullDirectoryListing(); + $directories = $this->getCategoryDirFileList($type); foreach ($directories as $dir) { - if ($dir instanceof ISimpleFolder) { + if ($dir instanceof Folder) { $categories[] = $dir->getName(); } } @@ -191,6 +193,20 @@ private function getAllCategories(string $type): array { } } + private function getCategoryDirFileList(string $type) : array { + try { + $instanceId = $this->config->getSystemValue('instanceid', null); + if ($instanceId === null) { + throw new NotFoundException('Instance ID not found'); + } + $rootFolder = $this->rootFolder; + $folder = $rootFolder->get('appdata_' . $instanceId . '/richdocuments' . '/' . $type); + return $folder->getDirectoryListing(); + } catch (NotFoundException $e) { + return []; + } + } + /** * Generate file URL. *