extensionSystem: Install pending updates on startup

Now that we have a way to check for updates and download them, we
should actually apply them as well. Do this on startup before any
extensions are initialized, to make sure we don't run into any
conflicts with a previously loaded version.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/945
This commit is contained in:
Florian Müllner 2020-01-22 15:09:05 +01:00 committed by verdre
parent ea5732fe6f
commit db9ef11f28

View File

@ -45,6 +45,7 @@ var ExtensionManager = class {
return GLib.SOURCE_REMOVE; return GLib.SOURCE_REMOVE;
}); });
this._installExtensionUpdates();
this._sessionUpdated(); this._sessionUpdated();
} }
@ -456,6 +457,21 @@ var ExtensionManager = class {
}).forEach(extension => this.reloadExtension(extension)); }).forEach(extension => this.reloadExtension(extension));
} }
_installExtensionUpdates() {
FileUtils.collectFromDatadirs('extension-updates', true, (dir, info) => {
let fileType = info.get_file_type();
if (fileType !== Gio.FileType.DIRECTORY)
return;
let uuid = info.get_name();
let extensionDir = Gio.File.new_for_path(
GLib.build_filenamev([global.userdatadir, 'extensions', uuid]));
FileUtils.recursivelyDeleteDir(extensionDir, false);
FileUtils.recursivelyMoveDir(dir, extensionDir);
FileUtils.recursivelyDeleteDir(dir, true);
});
}
_loadExtensions() { _loadExtensions() {
global.settings.connect(`changed::${ENABLED_EXTENSIONS_KEY}`, global.settings.connect(`changed::${ENABLED_EXTENSIONS_KEY}`,
this._onEnabledExtensionsChanged.bind(this)); this._onEnabledExtensionsChanged.bind(this));