diff --git a/src/gui/accountsettings.cpp b/src/gui/accountsettings.cpp index 87d86f97338f0..0d8ea92cf9411 100644 --- a/src/gui/accountsettings.cpp +++ b/src/gui/accountsettings.cpp @@ -1091,20 +1091,8 @@ void AccountSettings::slotScheduleCurrentFolderForceRemoteDiscovery() void AccountSettings::slotForceSyncCurrentFolder() { FolderMan *folderMan = FolderMan::instance(); - if (auto selectedFolder = folderMan->folder(selectedFolderAlias())) { - // Terminate and reschedule any running sync - for (auto f : folderMan->map()) { - if (f->isSyncRunning()) { - f->slotTerminateSync(); - folderMan->scheduleFolder(f); - } - } - - selectedFolder->slotWipeErrorBlacklist(); // issue #6757 - - // Insert the selected folder at the front of the queue - folderMan->scheduleFolderNext(selectedFolder); - } + auto selectedFolder = folderMan->folder(selectedFolderAlias()); + folderMan->forceSyncForFolder(selectedFolder); } void AccountSettings::slotOpenOC() diff --git a/src/gui/folderman.cpp b/src/gui/folderman.cpp index 66f1486604746..8d57a72b844f3 100644 --- a/src/gui/folderman.cpp +++ b/src/gui/folderman.cpp @@ -599,6 +599,21 @@ void FolderMan::scheduleAllFolders() } } +void FolderMan::forceSyncForFolder(Folder *folder) +{ + // Terminate and reschedule any running sync + for (const auto folderInMap : map()) { + if (folderInMap->isSyncRunning()) { + folderInMap->slotTerminateSync(); + scheduleFolder(folderInMap); + } + } + + folder->slotWipeErrorBlacklist(); // issue #6757 + // Insert the selected folder at the front of the queue + scheduleFolderNext(folder); +} + void FolderMan::slotScheduleAppRestart() { _appRestartRequired = true; diff --git a/src/gui/folderman.h b/src/gui/folderman.h index c15be05295b64..bda66138d6e76 100644 --- a/src/gui/folderman.h +++ b/src/gui/folderman.h @@ -263,6 +263,8 @@ public slots: /** Wipe folder */ void slotWipeFolderForAccount(AccountState *accountState); + void forceSyncForFolder(Folder *folder); + private slots: void slotFolderSyncPaused(Folder *, bool paused); void slotFolderCanSyncChanged();