don't double setup provider when calling `setupForUser` after `setupForPath`

Signed-off-by: Robin Appelman <robin@icewind.nl>
pull/31265/head
Robin Appelman 4 years ago
parent 6b085b6fd1
commit d342c764f2
No known key found for this signature in database
GPG Key ID: 42B69D8A64526EFB
  1. 11
      lib/private/Files/Config/MountProviderCollection.php
  2. 8
      lib/private/Files/SetupManager.php

@ -104,14 +104,19 @@ class MountProviderCollection implements IMountProviderCollection, Emitter {
return $this->getMountsForFromProviders($user, $providers);
}
public function addMountForUser(IUser $user, IMountManager $mountManager) {
public function addMountForUser(IUser $user, IMountManager $mountManager, callable $providerFilter = null) {
// shared mount provider gets to go last since it needs to know existing files
// to check for name collisions
$firstMounts = [];
$firstProviders = array_filter($this->providers, function (IMountProvider $provider) {
if ($providerFilter) {
$providers = array_filter($this->providers, $providerFilter);
} else {
$providers = $this->providers;
}
$firstProviders = array_filter($providers, function (IMountProvider $provider) {
return (get_class($provider) !== 'OCA\Files_Sharing\MountProvider');
});
$lastProviders = array_filter($this->providers, function (IMountProvider $provider) {
$lastProviders = array_filter($providers, function (IMountProvider $provider) {
return (get_class($provider) === 'OCA\Files_Sharing\MountProvider');
});
foreach ($firstProviders as $provider) {

@ -204,8 +204,14 @@ class SetupManager {
}
$this->setupUsersComplete[] = $user->getUID();
if (!isset($this->setupUserMountProviders[$user->getUID()])) {
$this->setupUserMountProviders[$user->getUID()] = [];
}
$this->setupForUserWith($user, function () use ($user) {
$this->mountProviderCollection->addMountForUser($user, $this->mountManager);
$this->mountProviderCollection->addMountForUser($user, $this->mountManager, function (IMountProvider $provider) use ($user) {
return !in_array(get_class($provider), $this->setupUserMountProviders[$user->getUID()]);
});
});
$this->userFullySetup($user);
}

Loading…
Cancel
Save