diff --git a/public/scripts/extensions.js b/public/scripts/extensions.js index fe6303e3d..19509085b 100644 --- a/public/scripts/extensions.js +++ b/public/scripts/extensions.js @@ -592,37 +592,43 @@ function getModuleInformation() { * Generates the HTML strings for all extensions and displays them in a popup. */ async function showExtensionsDetails() { - showLoader(); - let htmlDefault = '

Built-in Extensions:

'; - let htmlExternal = '

Installed Extensions:

'; + try{ + showLoader(); + let htmlDefault = '

Built-in Extensions:

'; + let htmlExternal = '

Installed Extensions:

'; - const extensions = Object.entries(manifests).sort((a, b) => a[1].loading_order - b[1].loading_order); - const promises = []; + const extensions = Object.entries(manifests).sort((a, b) => a[1].loading_order - b[1].loading_order); + const promises = []; - for (const extension of extensions) { - promises.push(getExtensionData(extension)); - } - - const settledPromises = await Promise.allSettled(promises); - - settledPromises.forEach(promise => { - if (promise.status === 'fulfilled') { - const { isExternal, extensionHtml } = promise.value; - if (isExternal) { - htmlExternal += extensionHtml; - } else { - htmlDefault += extensionHtml; - } + for (const extension of extensions) { + promises.push(getExtensionData(extension)); } - }); - const html = ` - ${getModuleInformation()} - ${htmlDefault} - ${htmlExternal} - `; - hideLoader(); - callPopup(`
${html}
`, 'text'); + const settledPromises = await Promise.allSettled(promises); + + settledPromises.forEach(promise => { + if (promise.status === 'fulfilled') { + const { isExternal, extensionHtml } = promise.value; + if (isExternal) { + htmlExternal += extensionHtml; + } else { + htmlDefault += extensionHtml; + } + } + }); + + const html = ` + ${getModuleInformation()} + ${htmlDefault} + ${htmlExternal} + `; + callPopup(`
${html}
`, 'text'); + } catch (error) { + toastr.error('Error loading extensions. See browser console for details.'); + console.error(error); + } finally { + hideLoader(); + } }