From 55e2f6aa9c99bed9f4b8175fd58fa827b4386220 Mon Sep 17 00:00:00 2001 From: Christopher Ng Date: Mon, 24 Feb 2025 16:32:06 -0800 Subject: [PATCH 1/4] fix(files_sharing): Fix stray groups not being cleaned up from shares when deleted Signed-off-by: Christopher Ng --- .../files_sharing/lib/AppInfo/Application.php | 2 ++ .../lib/Listener/GroupDeletedListener.php | 31 +++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 apps/files_sharing/lib/Listener/GroupDeletedListener.php diff --git a/apps/files_sharing/lib/AppInfo/Application.php b/apps/files_sharing/lib/AppInfo/Application.php index 6c0d5ca078148..a6ec5cbaac00b 100644 --- a/apps/files_sharing/lib/AppInfo/Application.php +++ b/apps/files_sharing/lib/AppInfo/Application.php @@ -17,6 +17,7 @@ use OCA\Files_Sharing\Helper; use OCA\Files_Sharing\Listener\BeforeDirectFileDownloadListener; use OCA\Files_Sharing\Listener\BeforeZipCreatedListener; +use OCA\Files_Sharing\Listener\GroupDeletedListener; use OCA\Files_Sharing\Listener\LoadAdditionalListener; use OCA\Files_Sharing\Listener\LoadPublicFileRequestAuthListener; use OCA\Files_Sharing\Listener\LoadSidebarListener; @@ -86,6 +87,7 @@ function () use ($c) { $context->registerEventListener(UserDeletedEvent::class, DisplayNameCache::class); $context->registerEventListener(GroupChangedEvent::class, GroupDisplayNameCache::class); $context->registerEventListener(GroupDeletedEvent::class, GroupDisplayNameCache::class); + $context->registerEventListener(GroupDeletedEvent::class, GroupDeletedListener::class); // Sidebar and files scripts $context->registerEventListener(LoadAdditionalScriptsEvent::class, LoadAdditionalListener::class); diff --git a/apps/files_sharing/lib/Listener/GroupDeletedListener.php b/apps/files_sharing/lib/Listener/GroupDeletedListener.php new file mode 100644 index 0000000000000..ece1033e195a3 --- /dev/null +++ b/apps/files_sharing/lib/Listener/GroupDeletedListener.php @@ -0,0 +1,31 @@ + */ +class GroupDeletedListener implements IEventListener { + public function __construct( + private IShareManager $shareManager, + ) { + } + + public function handle(Event $event): void { + if (!($event instanceof GroupDeletedEvent)) { + return; + } + $group = $event->getGroup(); + $this->shareManager->groupDeleted($group->getGID()); + } +} From 026233f1758f59717bdac24521cafe164eb8fbc8 Mon Sep 17 00:00:00 2001 From: Christopher Ng Date: Mon, 24 Feb 2025 16:32:06 -0800 Subject: [PATCH 2/4] chore(files_sharing): Update autoloaders Signed-off-by: Christopher Ng --- apps/files_sharing/composer/composer/autoload_classmap.php | 1 + apps/files_sharing/composer/composer/autoload_static.php | 1 + 2 files changed, 2 insertions(+) diff --git a/apps/files_sharing/composer/composer/autoload_classmap.php b/apps/files_sharing/composer/composer/autoload_classmap.php index b42d155526317..268ed02d22948 100644 --- a/apps/files_sharing/composer/composer/autoload_classmap.php +++ b/apps/files_sharing/composer/composer/autoload_classmap.php @@ -60,6 +60,7 @@ 'OCA\\Files_Sharing\\ISharedStorage' => $baseDir . '/../lib/ISharedStorage.php', 'OCA\\Files_Sharing\\Listener\\BeforeDirectFileDownloadListener' => $baseDir . '/../lib/Listener/BeforeDirectFileDownloadListener.php', 'OCA\\Files_Sharing\\Listener\\BeforeZipCreatedListener' => $baseDir . '/../lib/Listener/BeforeZipCreatedListener.php', + 'OCA\\Files_Sharing\\Listener\\GroupDeletedListener' => $baseDir . '/../lib/Listener/GroupDeletedListener.php', 'OCA\\Files_Sharing\\Listener\\LoadAdditionalListener' => $baseDir . '/../lib/Listener/LoadAdditionalListener.php', 'OCA\\Files_Sharing\\Listener\\LoadPublicFileRequestAuthListener' => $baseDir . '/../lib/Listener/LoadPublicFileRequestAuthListener.php', 'OCA\\Files_Sharing\\Listener\\LoadSidebarListener' => $baseDir . '/../lib/Listener/LoadSidebarListener.php', diff --git a/apps/files_sharing/composer/composer/autoload_static.php b/apps/files_sharing/composer/composer/autoload_static.php index bb3642569474c..9236ee9a7e9db 100644 --- a/apps/files_sharing/composer/composer/autoload_static.php +++ b/apps/files_sharing/composer/composer/autoload_static.php @@ -75,6 +75,7 @@ class ComposerStaticInitFiles_Sharing 'OCA\\Files_Sharing\\ISharedStorage' => __DIR__ . '/..' . '/../lib/ISharedStorage.php', 'OCA\\Files_Sharing\\Listener\\BeforeDirectFileDownloadListener' => __DIR__ . '/..' . '/../lib/Listener/BeforeDirectFileDownloadListener.php', 'OCA\\Files_Sharing\\Listener\\BeforeZipCreatedListener' => __DIR__ . '/..' . '/../lib/Listener/BeforeZipCreatedListener.php', + 'OCA\\Files_Sharing\\Listener\\GroupDeletedListener' => __DIR__ . '/..' . '/../lib/Listener/GroupDeletedListener.php', 'OCA\\Files_Sharing\\Listener\\LoadAdditionalListener' => __DIR__ . '/..' . '/../lib/Listener/LoadAdditionalListener.php', 'OCA\\Files_Sharing\\Listener\\LoadPublicFileRequestAuthListener' => __DIR__ . '/..' . '/../lib/Listener/LoadPublicFileRequestAuthListener.php', 'OCA\\Files_Sharing\\Listener\\LoadSidebarListener' => __DIR__ . '/..' . '/../lib/Listener/LoadSidebarListener.php', From 7455bea52057aecd4179e4ae41731e81283bbcb5 Mon Sep 17 00:00:00 2001 From: Christopher Ng Date: Mon, 24 Feb 2025 16:32:06 -0800 Subject: [PATCH 3/4] test(files_sharing): Deleted groups are removed from shares Signed-off-by: Christopher Ng --- apps/files_sharing/src/views/SharingList.vue | 4 +- cypress/e2e/files_sharing/group-deleted.cy.ts | 65 +++++++++++++++++++ 2 files changed, 68 insertions(+), 1 deletion(-) create mode 100644 cypress/e2e/files_sharing/group-deleted.cy.ts diff --git a/apps/files_sharing/src/views/SharingList.vue b/apps/files_sharing/src/views/SharingList.vue index 2167059772ef3..1b657bed44cac 100644 --- a/apps/files_sharing/src/views/SharingList.vue +++ b/apps/files_sharing/src/views/SharingList.vue @@ -4,7 +4,9 @@ -->