diff --git a/apps/files_sharing/lib/DefaultPublicShareTemplateProvider.php b/apps/files_sharing/lib/DefaultPublicShareTemplateProvider.php index d505f38817c..784dc4e5e15 100644 --- a/apps/files_sharing/lib/DefaultPublicShareTemplateProvider.php +++ b/apps/files_sharing/lib/DefaultPublicShareTemplateProvider.php @@ -77,6 +77,7 @@ class DefaultPublicShareTemplateProvider implements IPublicShareTemplateProvider $view = 'public-share'; if ($shareNode instanceof File) { $view = 'public-file-share'; + $this->initialState->provideInitialState('fileId', $shareNode->getId()); } elseif (($share->getPermissions() & \OCP\Constants::PERMISSION_CREATE) && !($share->getPermissions() & \OCP\Constants::PERMISSION_READ) ) { diff --git a/apps/files_sharing/src/init-public.ts b/apps/files_sharing/src/init-public.ts index 1b4765960aa..79aab58bd1d 100644 --- a/apps/files_sharing/src/init-public.ts +++ b/apps/files_sharing/src/init-public.ts @@ -22,3 +22,14 @@ navigation.setActive(navigation.views.find(({ id }) => id === view) ?? null) // Force our own router window.OCP.Files = window.OCP.Files ?? {} window.OCP.Files.Router = new RouterService(router) + +// If this is a single file share, so set the fileid as active in the URL +const fileId = loadState('files_sharing', 'fileId', null) +const token = loadState('files_sharing', 'sharingToken') +if (fileId !== null) { + window.OCP.Files.Router.goToRoute( + 'filelist', + { ...window.OCP.Files.Router.params, token, fileid: String(fileId) }, + { ...window.OCP.Files.Router.query, openfile: 'true' }, + ) +}