diff options
author | Hannah von Reth <hannah.vonreth@owncloud.com> | 2022-03-01 16:06:22 +0300 |
---|---|---|
committer | Hannah von Reth <vonreth@kde.org> | 2022-03-10 13:51:30 +0300 |
commit | d47a1483c01fc4ad4594ff32bbe517e03d81d26e (patch) | |
tree | 7885ca4e0794718a7d3753b23ba59d431b0ab4de /src/gui/folderman.cpp | |
parent | 145b7404b4dced52d7c4b6ebc1e424b54a142c6c (diff) |
Don't load folder if we encounter a db error
Fixes: #9147
Diffstat (limited to 'src/gui/folderman.cpp')
-rw-r--r-- | src/gui/folderman.cpp | 56 |
1 files changed, 30 insertions, 26 deletions
diff --git a/src/gui/folderman.cpp b/src/gui/folderman.cpp index 2d9ae5731..7597d2637 100644 --- a/src/gui/folderman.cpp +++ b/src/gui/folderman.cpp @@ -193,24 +193,26 @@ void FolderMan::unloadFolder(Folder *f) { Q_ASSERT(f); + _folderMap.remove(f->alias()); _socketApi->slotUnregisterPath(f->alias()); - _folderMap.remove(f->alias()); - disconnect(f, &Folder::syncStarted, - this, &FolderMan::slotFolderSyncStarted); - disconnect(f, &Folder::syncFinished, - this, &FolderMan::slotFolderSyncFinished); - disconnect(f, &Folder::syncStateChange, - this, &FolderMan::slotForwardFolderSyncStateChange); - disconnect(f, &Folder::syncPausedChanged, - this, &FolderMan::slotFolderSyncPaused); - disconnect(&f->syncEngine().syncFileStatusTracker(), &SyncFileStatusTracker::fileStatusChanged, - _socketApi.data(), &SocketApi::broadcastStatusPushMessage); - disconnect(f, &Folder::watchedFileChangedExternally, - &f->syncEngine().syncFileStatusTracker(), &SyncFileStatusTracker::slotPathTouched); + if (!f->hasSetupError()) { + disconnect(f, &Folder::syncStarted, + this, &FolderMan::slotFolderSyncStarted); + disconnect(f, &Folder::syncFinished, + this, &FolderMan::slotFolderSyncFinished); + disconnect(f, &Folder::syncStateChange, + this, &FolderMan::slotForwardFolderSyncStateChange); + disconnect(f, &Folder::syncPausedChanged, + this, &FolderMan::slotFolderSyncPaused); + disconnect(&f->syncEngine().syncFileStatusTracker(), &SyncFileStatusTracker::fileStatusChanged, + _socketApi.data(), &SocketApi::broadcastStatusPushMessage); + disconnect(f, &Folder::watchedFileChangedExternally, + &f->syncEngine().syncFileStatusTracker(), &SyncFileStatusTracker::slotPathTouched); - f->syncEngine().disconnect(f); + f->syncEngine().disconnect(f); + } } void FolderMan::unloadAndDeleteAllFolders() @@ -1123,18 +1125,20 @@ Folder *FolderMan::addFolderInternal( } // See matching disconnects in unloadFolder(). - connect(folder, &Folder::syncStarted, this, &FolderMan::slotFolderSyncStarted); - connect(folder, &Folder::syncFinished, this, &FolderMan::slotFolderSyncFinished); - connect(folder, &Folder::syncStateChange, this, &FolderMan::slotForwardFolderSyncStateChange); - connect(folder, &Folder::syncPausedChanged, this, &FolderMan::slotFolderSyncPaused); - connect(folder, &Folder::canSyncChanged, this, &FolderMan::slotFolderCanSyncChanged); - connect(&folder->syncEngine().syncFileStatusTracker(), &SyncFileStatusTracker::fileStatusChanged, - _socketApi.data(), &SocketApi::broadcastStatusPushMessage); - connect(folder, &Folder::watchedFileChangedExternally, - &folder->syncEngine().syncFileStatusTracker(), &SyncFileStatusTracker::slotPathTouched); - - folder->registerFolderWatcher(); - registerFolderWithSocketApi(folder); + if (!folder->hasSetupError()) { + connect(folder, &Folder::syncStarted, this, &FolderMan::slotFolderSyncStarted); + connect(folder, &Folder::syncFinished, this, &FolderMan::slotFolderSyncFinished); + connect(folder, &Folder::syncStateChange, this, &FolderMan::slotForwardFolderSyncStateChange); + connect(folder, &Folder::syncPausedChanged, this, &FolderMan::slotFolderSyncPaused); + connect(folder, &Folder::canSyncChanged, this, &FolderMan::slotFolderCanSyncChanged); + connect(&folder->syncEngine().syncFileStatusTracker(), &SyncFileStatusTracker::fileStatusChanged, + _socketApi.data(), &SocketApi::broadcastStatusPushMessage); + connect(folder, &Folder::watchedFileChangedExternally, + &folder->syncEngine().syncFileStatusTracker(), &SyncFileStatusTracker::slotPathTouched); + + folder->registerFolderWatcher(); + registerFolderWithSocketApi(folder); + } return folder; } |