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:
parent
ea5732fe6f
commit
db9ef11f28
@ -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));
|
||||||
|
Loading…
Reference in New Issue
Block a user