mirror of
https://github.com/nextcloud/server.git
synced 2026-02-20 00:12:30 -05:00
don't double setup provider when calling setupForUser after setupForPath
Signed-off-by: Robin Appelman <robin@icewind.nl>
This commit is contained in:
parent
6b085b6fd1
commit
d342c764f2
2 changed files with 15 additions and 4 deletions
|
|
@ -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…
Reference in a new issue