Add ability for FileProviderDomainManager to wipe domains
authorClaudio Cambra <claudio.cambra@nextcloud.com>
Wed, 1 Feb 2023 16:21:35 +0000 (17:21 +0100)
committerClaudio Cambra <claudio.cambra@nextcloud.com>
Fri, 12 May 2023 05:21:17 +0000 (13:21 +0800)
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
src/gui/macOS/fileproviderdomainmanager_mac.mm

index 41f59b980e88290cf23025f93f4739d80a312a65..2249ecab73af8d691fc782fd16a55723773c7332 100644 (file)
@@ -100,6 +100,32 @@ class FileProviderDomainManager::Private {
         }];
     }
 
+    void wipeAllFileProviderDomains()
+    {
+        qCDebug(lcMacFileProviderDomainManager) << "Removing and wiping all file provider domains";
+
+        [NSFileProviderManager getDomainsWithCompletionHandler:^(NSArray<NSFileProviderDomain *> *domains, NSError *error) {
+            if (error) {
+                qCDebug(lcMacFileProviderDomainManager) << "Error removing and wiping file provider domains: "
+                                                        << [error code]
+                                                        << [error localizedDescription];
+                return;
+            }
+
+            for (NSFileProviderDomain *domain in domains) {
+                [NSFileProviderManager removeDomain:domain mode:NSFileProviderDomainRemovalModeRemoveAll completionHandler:^(NSURL *preservedLocation, NSError *error) {
+                    if (error) {
+                        qCDebug(lcMacFileProviderDomainManager) << "Error removing and wiping file provider domain: "
+                                                                << [domain displayName]
+                                                                << [error code]
+                                                                << [error localizedDescription];
+                        return;
+                    }
+                }];
+            }
+        }];
+    }
+
     void setFileProviderDomainConnected(const AccountState *accountState)
     {
         const QString accountDisplayName = accountState->account()->displayName();
@@ -158,6 +184,7 @@ FileProviderDomainManager::FileProviderDomainManager(QObject *parent)
     connect(AccountManager::instance(), &AccountManager::accountRemoved,
             this, &FileProviderDomainManager::removeFileProviderDomainForAccount);
 
+    d->wipeAllFileProviderDomains(); // TODO: Remove when testing done
     setupFileProviderDomains(); // Initially fetch accounts in manager
 }