-
-
Notifications
You must be signed in to change notification settings - Fork 654
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Notifying users of available add-on updates (#16636)
Closes #15035 Summary of the issue: Users would like a push notification on NVDA start-up letting them know if add-ons have available updates Description of user facing changes When starting NVDA, a dialog will appear notifying users of updatable add-ons if there are available updates. This will only notify users if the available update is in the same channel as the installed add-on. There is an "update all" button on the dialog and a list of add-ons with updates available. There is also an "Open Add-on Store" button to open the add-on store to the updatable add-ons tab. A setting to disable this. This is a combobox so that in future users can decide between: notify on updates (default) automatic update (See Ability to automatically update add-ons #3208) disabled Description of development approach Created a scheduling module to schedule tasks on NVDA start up, using the schedule pip module. This is so we can have conflict free scheduling. e.g. so NVDA's update notification won't clash with the add-on update notification. Uses their suggested code to run a background thread for task scheduling: schedule.readthedocs.io/en/stable/background-execution.html Changed much of the Add-on Store downloading code to be classmethods. This allows us to use it from the message dialog without creating a store instance.
- Loading branch information
Showing
18 changed files
with
891 additions
and
101 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,10 +1,21 @@ | ||
# A part of NonVisual Desktop Access (NVDA) | ||
# Copyright (C) 2022 NV Access Limited | ||
# Copyright (C) 2022-2024 NV Access Limited | ||
# This file is covered by the GNU General Public License. | ||
# See the file COPYING for more details. | ||
|
||
from utils.schedule import scheduleThread, ThreadTarget | ||
|
||
from .controls.storeDialog import AddonStoreDialog | ||
from .controls.messageDialogs import UpdatableAddonsDialog | ||
|
||
__all__ = [ | ||
"AddonStoreDialog", | ||
"initialize", | ||
] | ||
|
||
|
||
def initialize(): | ||
scheduleThread.scheduleDailyJobAtStartUp( | ||
UpdatableAddonsDialog._checkForUpdatableAddons, | ||
queueToThread=ThreadTarget.GUI, | ||
) |
Oops, something went wrong.