4949use OCP \Files \Mount \IMountPoint ;
5050use OCP \Files \NotFoundException ;
5151use OCP \Files \Storage \IStorage ;
52+ use OCP \Files \Storage \IStorageFactory ;
5253use OCP \Group \Events \UserAddedEvent ;
5354use OCP \Group \Events \UserRemovedEvent ;
5455use OCP \HintException ;
6061use OCP \IUserManager ;
6162use OCP \IUserSession ;
6263use OCP \Lockdown \ILockdownManager ;
64+ use OCP \Server ;
6365use OCP \Share \Events \ShareCreatedEvent ;
6466use Override ;
6567use Psr \Log \LoggerInterface ;
@@ -115,6 +117,7 @@ public function __construct(
115117 private IAppManager $ appManager ,
116118 private FileAccess $ fileAccess ,
117119 private IAppConfig $ appConfig ,
120+ private IStorageFactory $ storageFactory ,
118121 ) {
119122 $ this ->cache = $ cacheFactory ->createDistributed ('setupmanager:: ' );
120123 $ this ->listeningForProviders = false ;
@@ -299,7 +302,7 @@ public function setupForUser(IUser $user): void {
299302 /**
300303 * Part of the user setup that is run only once per user.
301304 */
302- private function oneTimeUserSetup (IUser $ user ) {
305+ private function oneTimeUserSetup (IUser $ user ): void {
303306 if ($ this ->isSetupStarted ($ user )) {
304307 return ;
305308 }
@@ -311,20 +314,22 @@ private function oneTimeUserSetup(IUser $user) {
311314
312315 $ this ->setupBuiltinWrappers ();
313316
314- $ prevLogging = Filesystem::logWarningWhenAddingStorageWrapper (false );
315-
316317 // TODO remove hook
318+ $ prevLogging = Filesystem::logWarningWhenAddingStorageWrapper (false );
317319 OC_Hook::emit ('OC_Filesystem ' , 'preSetup ' , ['user ' => $ user ->getUID ()]);
320+ Filesystem::logWarningWhenAddingStorageWrapper ($ prevLogging );
318321
319322 $ event = new BeforeFileSystemSetupEvent ($ user );
320323 $ this ->eventDispatcher ->dispatchTyped ($ event );
321324
322- foreach ($ event ->getStorageWrappers () as $ name => $ wrapper ) {
323- Filesystem::addStorageWrapper ($ name , $ wrapper ['wrapper ' ], $ wrapper ['priority ' ]);
325+ $ storageWrappers = $ event ->getStorageWrappers ();
326+ if ($ storageWrappers !== []) {
327+ $ mounts = $ this ->mountManager ->getAll ();
328+ foreach ($ storageWrappers as $ wrapperName => $ wrapper ) {
329+ $ this ->storageFactory ->addStorageWrapper ($ wrapperName , $ wrapper ['callable ' ], $ wrapper ['priority ' ], $ mounts );
330+ }
324331 }
325332
326- Filesystem::logWarningWhenAddingStorageWrapper ($ prevLogging );
327-
328333 $ userDir = '/ ' . $ user ->getUID () . '/files ' ;
329334
330335 Filesystem::initInternal ($ userDir );
@@ -776,7 +781,7 @@ private function listenForNewMountProviders() {
776781 }
777782 }
778783
779- private function setupListeners () {
784+ private function setupListeners (): void {
780785 // note that this event handling is intentionally pessimistic
781786 // clearing the cache to often is better than not enough
782787
0 commit comments