From 375d1892bf294c70730062b5af0fb225cfc1881f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Wed, 22 Jan 2020 14:45:15 +0100 Subject: [PATCH] extensionSystem: Add hasUpdate state The current support for extension updates is half-baked at best. We are about to change that, and implement offline updates similar to gnome-software. As a first step, add a hasUpdate property to the extension state which will communicate available updates. https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/945 --- js/misc/extensionUtils.js | 10 +++++++++- js/ui/extensionSystem.js | 10 ++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/js/misc/extensionUtils.js b/js/misc/extensionUtils.js index 3d01ad787..af2338f45 100644 --- a/js/misc/extensionUtils.js +++ b/js/misc/extensionUtils.js @@ -31,7 +31,15 @@ var ExtensionState = { UNINSTALLED: 99, }; -const SERIALIZED_PROPERTIES = ['type', 'state', 'path', 'error', 'hasPrefs', 'canChange']; +const SERIALIZED_PROPERTIES = [ + 'type', + 'state', + 'path', + 'error', + 'hasPrefs', + 'hasUpdate', + 'canChange', +]; /** * getCurrentExtension: diff --git a/js/ui/extensionSystem.js b/js/ui/extensionSystem.js index f7aca5ce9..49e333fff 100644 --- a/js/ui/extensionSystem.js +++ b/js/ui/extensionSystem.js @@ -198,6 +198,15 @@ var ExtensionManager = class { return true; } + notifyExtensionUpdate(uuid) { + let extension = this.lookup(uuid); + if (!extension) + return; + + extension.hasUpdate = true; + this.emit('extension-state-changed', extension); + } + logExtensionError(uuid, error) { let extension = this.lookup(uuid); if (!extension) @@ -253,6 +262,7 @@ var ExtensionManager = class { path: dir.get_path(), error: '', hasPrefs: dir.get_child('prefs.js').query_exists(null), + hasUpdate: false, canChange: false, }; this._extensions.set(uuid, extension);