Extract enumeration of materialised files for each domain manager into a separate...
authorClaudio Cambra <claudio.cambra@nextcloud.com>
Tue, 20 Feb 2024 08:51:58 +0000 (16:51 +0800)
committerClaudio Cambra <claudio.cambra@nextcloud.com>
Thu, 7 Mar 2024 03:51:55 +0000 (11:51 +0800)
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
src/gui/macOS/fileprovidersettingscontroller_mac.mm

index cd3749df5d1d35e9afd65a7fd3e4c00e78ec1356..b18a25d7a85dbb3409eec7acfd7b48a4df155dff 100644 (file)
@@ -185,6 +185,53 @@ public:
         return _fileProviderDomainSyncStatuses.value(userIdAtHost);
     }
 
+public slots:
+    void enumerateMaterialisedFilesForDomainManager(NSFileProviderManager * const managerForDomain,
+                                                    NSFileProviderDomain * const domain)
+    {
+        const id<NSFileProviderEnumerator> enumerator = [managerForDomain enumeratorForMaterializedItems];
+        Q_ASSERT(enumerator != nil);
+        [enumerator retain];
+
+        FileProviderStorageUseEnumerationObserver *const storageUseObserver = [[FileProviderStorageUseEnumerationObserver alloc] init];
+        [storageUseObserver retain];
+        storageUseObserver.enumerationFinishedHandler = ^(NSError *const error) {
+            qCInfo(lcFileProviderSettingsController) << "Enumeration finished for" << domain.identifier;
+            if (error != nil) {
+                qCWarning(lcFileProviderSettingsController) << "Error while enumerating storage use" << error.localizedDescription;
+                [storageUseObserver release];
+                [enumerator release];
+                return;
+            }
+
+            const auto items = storageUseObserver.materialisedItems;
+            Q_ASSERT(items != nil);
+
+            // Remember that OCC::Account::userIdAtHost == domain.identifier for us
+            const auto qDomainIdentifier = QString::fromNSString(domain.identifier);
+            QVector<FileProviderItemMetadata> qMaterialisedItems;
+            qMaterialisedItems.reserve(items.count);
+            for (const id<NSFileProviderItem> item in items) {
+                const auto itemMetadata = FileProviderItemMetadata::fromNSFileProviderItem(item, qDomainIdentifier);
+                const auto storageUsage = _storageUsage.value(qDomainIdentifier) + itemMetadata.documentSize();
+                qCDebug(lcFileProviderSettingsController) << "Adding item" << itemMetadata.identifier()
+                                                          << "with size" << itemMetadata.documentSize()
+                                                          << "to storage usage for account" << qDomainIdentifier
+                                                          << "with total size" << storageUsage;
+                qMaterialisedItems.append(itemMetadata);
+                _storageUsage.insert(qDomainIdentifier, storageUsage);
+            }
+            _materialisedFiles.insert(qDomainIdentifier, qMaterialisedItems);
+
+            emit q->localStorageUsageForAccountChanged(qDomainIdentifier);
+            emit q->materialisedItemsForAccountChanged(qDomainIdentifier);
+
+            [storageUseObserver release];
+            [enumerator release];
+        };
+        [enumerator enumerateItemsForObserver:storageUseObserver startingAtPage:NSFileProviderInitialPageSortedByName];
+    }
+
 private slots:
     void updateDomainSyncStatuses()
     {
@@ -237,47 +284,7 @@ private:
                     return;
                 }
 
-                const id<NSFileProviderEnumerator> enumerator = [managerForDomain enumeratorForMaterializedItems];
-                Q_ASSERT(enumerator != nil);
-                [enumerator retain];
-
-                FileProviderStorageUseEnumerationObserver *const storageUseObserver = [[FileProviderStorageUseEnumerationObserver alloc] init];
-                [storageUseObserver retain];
-                storageUseObserver.enumerationFinishedHandler = ^(NSError *const error) {
-                    qCInfo(lcFileProviderSettingsController) << "Enumeration finished for" << domain.identifier;
-                    if (error != nil) {
-                        qCWarning(lcFileProviderSettingsController) << "Error while enumerating storage use" << error.localizedDescription;
-                        [storageUseObserver release];
-                        [enumerator release];
-                        return;
-                    }
-
-                    const auto items = storageUseObserver.materialisedItems;
-                    Q_ASSERT(items != nil);
-
-                    // Remember that OCC::Account::userIdAtHost == domain.identifier for us
-                    const auto qDomainIdentifier = QString::fromNSString(domain.identifier);
-                    QVector<FileProviderItemMetadata> qMaterialisedItems;
-                    qMaterialisedItems.reserve(items.count);
-                    for (const id<NSFileProviderItem> item in items) {
-                        const auto itemMetadata = FileProviderItemMetadata::fromNSFileProviderItem(item, qDomainIdentifier);
-                        const auto storageUsage = _storageUsage.value(qDomainIdentifier) + itemMetadata.documentSize();
-                        qCDebug(lcFileProviderSettingsController) << "Adding item" << itemMetadata.identifier()
-                                                                  << "with size" << itemMetadata.documentSize()
-                                                                  << "to storage usage for account" << qDomainIdentifier
-                                                                  << "with total size" << storageUsage;
-                        qMaterialisedItems.append(itemMetadata);
-                        _storageUsage.insert(qDomainIdentifier, storageUsage);
-                    }
-                    _materialisedFiles.insert(qDomainIdentifier, qMaterialisedItems);
-
-                    emit q->localStorageUsageForAccountChanged(qDomainIdentifier);
-                    emit q->materialisedItemsForAccountChanged(qDomainIdentifier);
-
-                    [storageUseObserver release];
-                    [enumerator release];
-                };
-                [enumerator enumerateItemsForObserver:storageUseObserver startingAtPage:NSFileProviderInitialPageSortedByName];
+                enumerateMaterialisedFilesForDomainManager(managerForDomain, domain);
             }
         }];
     }