From 5965c5505d40aeb273587ed9a42b0127eaa5959e Mon Sep 17 00:00:00 2001 From: Varun Patil Date: Mon, 22 May 2023 14:32:52 -0700 Subject: [PATCH] fix: properly handle public link share deletion IShare::getSharedWith returns null for public links, and so AlbumMapper::removeFileWithOwner throws a TypeError (500) Signed-off-by: Varun Patil --- lib/Listener/AlbumsManagementEventListener.php | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/lib/Listener/AlbumsManagementEventListener.php b/lib/Listener/AlbumsManagementEventListener.php index 949823676..292fce0f9 100644 --- a/lib/Listener/AlbumsManagementEventListener.php +++ b/lib/Listener/AlbumsManagementEventListener.php @@ -49,11 +49,13 @@ public function handle(Event $event): void { } } elseif ($event instanceof ShareDeletedEvent) { $receiverId = $event->getShare()->getSharedWith(); - $this->forEachSubNode( - $event->getShare()->getNode(), - // Remove node from any album when the owner is $receiverId. - fn ($node) => $this->albumMapper->removeFileWithOwner($node->getId(), $receiverId), - ); + if ($receiverId !== null) { // null for public link shares + $this->forEachSubNode( + $event->getShare()->getNode(), + // Remove node from any album when the owner is $receiverId. + fn ($node) => $this->albumMapper->removeFileWithOwner($node->getId(), $receiverId), + ); + } } elseif ($event instanceof UserRemovedEvent) { // Get all shared albums for this group: $albums_group = $this->albumMapper->getSharedAlbumsForCollaborator($event->getGroup()->getGID(), AlbumMapper::TYPE_GROUP);