1717use OCP \EventDispatcher \IEventDispatcher ;
1818use OCP \EventDispatcher \IEventListener ;
1919use OCP \Files \Events \Node \NodeRenamedEvent ;
20+ use OCP \Files \NotFoundException ;
2021use OCP \IUser ;
22+ use OCP \IUserManager ;
2123use OCP \IUserSession ;
2224use OCP \Share \Events \ShareCreatedEvent ;
2325use OCP \Share \Events \ShareDeletedEvent ;
@@ -31,6 +33,7 @@ public function __construct(
3133 private IUserSession $ userSession ,
3234 private SetupManager $ setupManager ,
3335 private Manager $ encryptionManager ,
36+ private IUserManager $ userManager ,
3437 ) {
3538 }
3639
@@ -50,10 +53,14 @@ public function handle(Event $event): void {
5053 } elseif ($ event instanceof ShareCreatedEvent) {
5154 $ this ->getUpdate ()->postShared ($ event ->getShare ()->getNode ());
5255 } elseif ($ event instanceof ShareDeletedEvent) {
53- // In case the unsharing happens in a background job, we don't have
54- // a session and we load instead the user from the UserManager
55- $ owner = $ event ->getShare ()->getNode ()->getOwner ();
56- $ this ->getUpdate ($ owner )->postUnshared ($ event ->getShare ()->getNode ());
56+ try {
57+ // In case the unsharing happens in a background job, we don't have
58+ // a session and we load instead the user from the UserManager
59+ $ owner = $ this ->userManager ->get ($ event ->getShare ()->getShareOwner ());
60+ $ this ->getUpdate ($ owner )->postUnshared ($ event ->getShare ()->getNode ());
61+ } catch (NotFoundException $ e ) {
62+ /* The node was deleted already, nothing to update */
63+ }
5764 } elseif ($ event instanceof NodeRestoredEvent) {
5865 $ this ->getUpdate ()->postRestore ($ event ->getTarget ());
5966 }
@@ -78,7 +85,7 @@ private function getUpdate(?IUser $owner = null): Update {
7885 $ this ->updater = new Update (
7986 new Util (
8087 new View (),
81- \ OC :: $ server -> getUserManager () ,
88+ $ this -> userManager ,
8289 \OC ::$ server ->getGroupManager (),
8390 \OC ::$ server ->getConfig ()),
8491 \OC ::$ server ->getEncryptionManager (),
0 commit comments