Skip to content

Commit

Permalink
[Enhancement] Better status message when adding existing repo
Browse files Browse the repository at this point in the history
- Avoids freezing UI when an existing repo is added

Closes #1306
  • Loading branch information
DaffyTheDuck committed Apr 21, 2023
1 parent 20b7b49 commit 9ac38a1
Showing 1 changed file with 18 additions and 7 deletions.
25 changes: 18 additions & 7 deletions src/vorta/views/repo_add_dialog.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import logging
import re
from PyQt6 import QtCore, uic
from PyQt6.QtGui import QAction
Expand All @@ -10,6 +11,8 @@
from vorta.utils import borg_compat, choose_file_dialog, get_asset, get_private_keys, validate_passwords
from vorta.views.utils import get_colored_icon

logger = logging.getLogger(__name__)

uifile = get_asset('UI/repoadd.ui')
AddRepoUI, AddRepoBase = uic.loadUiType(uifile)

Expand All @@ -28,7 +31,7 @@ def __init__(self, parent=None):
self.saveButton = self.buttonBox.button(QDialogButtonBox.StandardButton.Ok)
self.saveButton.setText(self.tr("Add"))

self.buttonBox.rejected.connect(self.close)
self.buttonBox.rejected.connect(self.cancel_job)
self.buttonBox.accepted.connect(self.run)
self.chooseLocalFolderButton.clicked.connect(self.choose_local_backup_folder)
self.useRemoteRepoButton.clicked.connect(self.use_remote_repo_action)
Expand Down Expand Up @@ -146,7 +149,10 @@ def run_result(self, result):
self.added_repo.emit(result)
self.accept()
else:
self._set_status(self.tr('Unable to add your repository.'))
if self.cancel_job:
self._set_status(self.tr('Cancelled adding repo.'))
else:
self._set_status(self.tr('Unable to add your repository.'))

def init_encryption(self):
if borg_compat.check('V2'):
Expand Down Expand Up @@ -209,6 +215,11 @@ def password_listener(self):
self.passwordLabel.setText(translate('utils', msg))
return not bool(msg)

def cancel_job(self):
self.job.cancel()
logger.debug(f"Cancelled adding repo {self.values['repo_url']}")
return True


class ExistingRepoWindow(AddRepoWindow):
def __init__(self):
Expand Down Expand Up @@ -240,10 +251,10 @@ def run(self):
params = BorgInfoRepoJob.prepare(self.values)
if params['ok']:
self.saveButton.setEnabled(False)
thread = BorgInfoRepoJob(params['cmd'], params)
thread.updated.connect(self._set_status)
thread.result.connect(self.run_result)
self.thread = thread # Needs to be connected to self for tests to work.
self.thread.run()
job = BorgInfoRepoJob(params['cmd'], params, params['repo_id'])
job.updated.connect(self._set_status)
job.result.connect(self.run_result)
self.job = job # Needs to be connected to self for tests to work.
QApplication.instance().jobs_manager.add_job(job)
else:
self._set_status(params['message'])

0 comments on commit 9ac38a1

Please sign in to comment.