mirror of
https://github.com/freedomofpress/dangerzone.git
synced 2025-04-28 18:02:38 +02:00
Propagate "update check" prompt to UI checkbox
The "check for updates" button wasn't showing up immediately as checked as soon as the user is prompted for checking updates. This fixes that. Fixes #513
This commit is contained in:
parent
89365b585c
commit
1695cc7a6c
4 changed files with 16 additions and 3 deletions
|
@ -123,6 +123,7 @@ def gui_main(
|
|||
# Check for updates
|
||||
log.debug("Setting up Dangezone updater")
|
||||
updater = UpdaterThread(dangerzone)
|
||||
updater.update_check_toggled.connect(window.refresh_updates_checkbox)
|
||||
window.register_update_handler(updater.finished)
|
||||
|
||||
log.debug("Consulting updater settings before checking for updates")
|
||||
|
|
|
@ -229,6 +229,11 @@ class MainWindow(QtWidgets.QMainWindow):
|
|||
self.dangerzone.settings.set("updater_check", check)
|
||||
self.dangerzone.settings.save()
|
||||
|
||||
def refresh_updates_checkbox(self) -> None:
|
||||
"""Refreshes the "check for updates" checkbox according to the settings"""
|
||||
check = self.dangerzone.settings.get("updater_check")
|
||||
self.toggle_updates_action.setChecked(check)
|
||||
|
||||
def handle_updates(self, report: UpdateReport) -> None:
|
||||
"""Handle update reports from the update checker thread.
|
||||
|
||||
|
|
|
@ -108,6 +108,7 @@ class UpdaterThread(QtCore.QThread):
|
|||
"""
|
||||
|
||||
finished = QtCore.Signal(UpdateReport)
|
||||
update_check_toggled = QtCore.Signal()
|
||||
|
||||
GH_RELEASE_URL = (
|
||||
"https://api.github.com/repos/freedomofpress/dangerzone/releases/latest"
|
||||
|
@ -177,6 +178,7 @@ class UpdaterThread(QtCore.QThread):
|
|||
if self.check is None:
|
||||
log.debug("User has not been asked yet for update checks")
|
||||
self.check = self.prompt_for_checks()
|
||||
self.update_check_toggled.emit()
|
||||
return bool(self.check)
|
||||
elif not self.check:
|
||||
log.debug("User has expressed that they don't want to check for updates")
|
||||
|
|
|
@ -141,7 +141,10 @@ def test_linux_no_check(updater: UpdaterThread, monkeypatch: MonkeyPatch) -> Non
|
|||
|
||||
|
||||
def test_user_prompts(
|
||||
updater: UpdaterThread, monkeypatch: MonkeyPatch, mocker: MockerFixture
|
||||
qtbot: QtBot,
|
||||
updater: UpdaterThread,
|
||||
monkeypatch: MonkeyPatch,
|
||||
mocker: MockerFixture,
|
||||
) -> None:
|
||||
"""Test prompting users to ask them if they want to enable update checks."""
|
||||
# First run
|
||||
|
@ -165,8 +168,10 @@ def test_user_prompts(
|
|||
# Check disabling update checks.
|
||||
prompt_mock().launch.return_value = False # type: ignore [attr-defined]
|
||||
expected_settings["updater_check"] = False
|
||||
assert updater.should_check_for_updates() == False
|
||||
assert updater.dangerzone.settings.get_updater_settings() == expected_settings
|
||||
|
||||
with qtbot.waitSignal(updater.update_check_toggled) as blocker:
|
||||
assert updater.should_check_for_updates() == False
|
||||
assert updater.dangerzone.settings.get_updater_settings() == expected_settings
|
||||
|
||||
# Reset the "updater_check" field and check enabling update checks.
|
||||
updater.dangerzone.settings.set("updater_check", None)
|
||||
|
|
Loading…
Reference in a new issue