Add config value for extensions auto-update

60c22bf8032afe666cfe2dffe11143474f73567c

Cohee <18619528+Cohee1207@users.noreply.github.com>

4 files changed, +15 -8Ignore whitespace
default/config.yaml+3 -1
@@ -90,9 +90,11 @@ whitelistImportDomains:
90## headers:90## headers:
91## User-Agent: "Googlebot/2.1 (+http://www.google.com/bot.html)"91## User-Agent: "Googlebot/2.1 (+http://www.google.com/bot.html)"
92requestOverrides: []92requestOverrides: []
93# -- PLUGIN CONFIGURATION --93# -- EXTENSIONS CONFIGURATION --
94# Enable UI extensions94# Enable UI extensions
95enableExtensions: true95enableExtensions: true
96# Automatically update extensions when a release version changes
97enableExtensionsAutoUpdate: true
96# Extension settings98# Extension settings
97extras:99extras:
98 # Disables automatic model download from HuggingFace100 # Disables automatic model download from HuggingFace
public/script.js+4 -2
@@ -416,6 +416,7 @@ export const event_types = {
416 GENERATION_STOPPED: 'generation_stopped',416 GENERATION_STOPPED: 'generation_stopped',
417 GENERATION_ENDED: 'generation_ended',417 GENERATION_ENDED: 'generation_ended',
418 EXTENSIONS_FIRST_LOAD: 'extensions_first_load',418 EXTENSIONS_FIRST_LOAD: 'extensions_first_load',
419 EXTENSION_SETTINGS_LOADED: 'extension_settings_loaded',
419 SETTINGS_LOADED: 'settings_loaded',420 SETTINGS_LOADED: 'settings_loaded',
420 SETTINGS_UPDATED: 'settings_updated',421 SETTINGS_UPDATED: 'settings_updated',
421 GROUP_UPDATED: 'group_updated',422 GROUP_UPDATED: 'group_updated',
@@ -6517,9 +6518,10 @@ export async function getSettings() {
6517 selected_button = settings.selected_button;6518 selected_button = settings.selected_button;
65186519
6519 if (data.enable_extensions) {6520 if (data.enable_extensions) {
6521 const enableAutoUpdate = Boolean(data.enable_extensions_auto_update);
6520 const isVersionChanged = settings.currentVersion !== currentVersion;6522 const isVersionChanged = settings.currentVersion !== currentVersion;
6521 await loadExtensionSettings(settings, isVersionChanged);6523 await loadExtensionSettings(settings, isVersionChanged, enableAutoUpdate);
6522 eventSource.emit(event_types.EXTENSION_SETTINGS_LOADED);6524 await eventSource.emit(event_types.EXTENSION_SETTINGS_LOADED);
6523 }6525 }
65246526
6525 firstRun = !!settings.firstRun;6527 firstRun = !!settings.firstRun;
public/scripts/extensions.js+6 -5
@@ -822,16 +822,17 @@ export async function installExtension(url) {
822 const response = await request.json();822 const response = await request.json();
823 toastr.success(`Extension "${response.display_name}" by ${response.author} (version ${response.version}) has been installed successfully!`, 'Extension installation successful');823 toastr.success(`Extension "${response.display_name}" by ${response.author} (version ${response.version}) has been installed successfully!`, 'Extension installation successful');
824 console.debug(`Extension "${response.display_name}" has been installed successfully at ${response.extensionPath}`);824 console.debug(`Extension "${response.display_name}" has been installed successfully at ${response.extensionPath}`);
825 await loadExtensionSettings({}, false);825 await loadExtensionSettings({}, false, false);
826 eventSource.emit(event_types.EXTENSION_SETTINGS_LOADED);826 await eventSource.emit(event_types.EXTENSION_SETTINGS_LOADED);
827}827}
828828
829/**829/**
830 * Loads extension settings from the app settings.830 * Loads extension settings from the app settings.
831 * @param {object} settings App Settings831 * @param {object} settings App Settings
832 * @param {boolean} versionChanged Is this a version change?832 * @param {boolean} versionChanged Is this a version change?
833 * @param {boolean} enableAutoUpdate Enable auto-update
833 */834 */
834async function loadExtensionSettings(settings, versionChanged) {835async function loadExtensionSettings(settings, versionChanged, enableAutoUpdate) {
835 if (settings.extension_settings) {836 if (settings.extension_settings) {
836 Object.assign(extension_settings, settings.extension_settings);837 Object.assign(extension_settings, settings.extension_settings);
837 }838 }
@@ -842,11 +843,11 @@ async function loadExtensionSettings(settings, versionChanged) {
842 $('#extensions_notify_updates').prop('checked', extension_settings.notifyUpdates);843 $('#extensions_notify_updates').prop('checked', extension_settings.notifyUpdates);
843844
844 // Activate offline extensions845 // Activate offline extensions
845 eventSource.emit(event_types.EXTENSIONS_FIRST_LOAD);846 await eventSource.emit(event_types.EXTENSIONS_FIRST_LOAD);
846 extensionNames = await discoverExtensions();847 extensionNames = await discoverExtensions();
847 manifests = await getManifests(extensionNames);848 manifests = await getManifests(extensionNames);
848849
849 if (versionChanged) {850 if (versionChanged && enableAutoUpdate) {
850 await autoUpdateExtensions(false);851 await autoUpdateExtensions(false);
851 }852 }
852853
src/endpoints/settings.js+2 -0
@@ -9,6 +9,7 @@ const { jsonParser } = require('../express-common');
9const { getAllUserHandles, getUserDirectories } = require('../users');9const { getAllUserHandles, getUserDirectories } = require('../users');
1010
11const ENABLE_EXTENSIONS = getConfigValue('enableExtensions', true);11const ENABLE_EXTENSIONS = getConfigValue('enableExtensions', true);
12const ENABLE_EXTENSIONS_AUTO_UPDATE = getConfigValue('enableExtensionsAutoUpdate', true);
12const ENABLE_ACCOUNTS = getConfigValue('enableUserAccounts', false);13const ENABLE_ACCOUNTS = getConfigValue('enableUserAccounts', false);
1314
14// 10 minutes15// 10 minutes
@@ -268,6 +269,7 @@ router.post('/get', jsonParser, (request, response) => {
268 instruct,269 instruct,
269 context,270 context,
270 enable_extensions: ENABLE_EXTENSIONS,271 enable_extensions: ENABLE_EXTENSIONS,
272 enable_extensions_auto_update: ENABLE_EXTENSIONS_AUTO_UPDATE,
271 enable_accounts: ENABLE_ACCOUNTS,273 enable_accounts: ENABLE_ACCOUNTS,
272 });274 });
273});275});