From 0590b36838a1fe05921603beb17c51a9799fd950 Mon Sep 17 00:00:00 2001 From: LenAnderson Date: Thu, 28 Dec 2023 10:46:25 +0000 Subject: [PATCH] only reload ST after extension popup closed --- public/scripts/extensions.js | 32 +++++++++++++++++++++++++------- 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/public/scripts/extensions.js b/public/scripts/extensions.js index 5d69673fa..f4bfc554c 100644 --- a/public/scripts/extensions.js +++ b/public/scripts/extensions.js @@ -18,6 +18,8 @@ const defaultUrl = 'http://localhost:5100'; let saveMetadataTimeout = null; +let requiresReload = false; + export function saveMetadataDebounced() { const context = getContext(); const groupId = context.groupId; @@ -193,24 +195,32 @@ async function discoverExtensions() { function onDisableExtensionClick() { const name = $(this).data('name'); - disableExtension(name); + disableExtension(name, false); } function onEnableExtensionClick() { const name = $(this).data('name'); - enableExtension(name); + enableExtension(name, false); } -async function enableExtension(name) { +async function enableExtension(name, reload = true) { extension_settings.disabledExtensions = extension_settings.disabledExtensions.filter(x => x !== name); await saveSettings(); - location.reload(); + if (reload) { + location.reload(); + } else { + requiresReload = true; + } } -async function disableExtension(name) { +async function disableExtension(name, reload = true) { extension_settings.disabledExtensions.push(name); await saveSettings(); - location.reload(); + if (reload) { + location.reload(); + } else { + requiresReload = true; + } } async function getManifests(names) { @@ -560,6 +570,7 @@ function getModuleInformation() { * Generates the HTML strings for all extensions and displays them in a popup. */ async function showExtensionsDetails() { + let popupPromise; try { showLoader(); let htmlDefault = '

Built-in Extensions:

'; @@ -590,13 +601,20 @@ async function showExtensionsDetails() { ${htmlDefault} ${htmlExternal} `; - callPopup(`
${html}
`, 'text'); + popupPromise = callPopup(`
${html}
`, 'text'); } catch (error) { toastr.error('Error loading extensions. See browser console for details.'); console.error(error); } finally { hideLoader(); } + if (popupPromise) { + await popupPromise; + } + if (requiresReload) { + showLoader(); + location.reload(); + } }