Remove hard coded list in extensions

This commit is contained in:
SillyLossy
2023-04-18 12:56:20 +03:00
parent 3fe99b5f8d
commit 795e59aba0
2 changed files with 33 additions and 4 deletions

View File

@ -1,4 +1,4 @@
import { callPopup, saveSettings, saveSettingsDebounced } from "../script.js";
import { callPopup, saveSettings, saveSettingsDebounced, token } from "../script.js";
import { isSubsetOf } from "./utils.js";
export {
getContext,
@ -9,8 +9,8 @@ export {
extension_settings,
};
const extensionNames = ['caption', 'dice', 'expressions', 'floating-prompt', 'memory', 'backgrounds'];
const manifests = await getManifests(extensionNames);
let extensionNames = [];
let manifests = [];
const defaultUrl = "http://localhost:5100";
const extension_settings = {
@ -34,6 +34,24 @@ const getApiUrl = () => extension_settings.apiUrl;
const defaultRequestArgs = { method: 'GET', headers: { 'Bypass-Tunnel-Reminder': 'bypass' } };
let connectedToApi = false;
async function discoverExtensions() {
try {
const response = await fetch('/discover_extensions', { headers: { 'X-CSRF-Token': token } });
if (response.ok) {
const extensions = await response.json();
return extensions;
}
else {
return [];
}
}
catch (err) {
console.error(err);
return [];
}
}
function onDisableExtensionClick() {
const name = $(this).data('name');
disableExtension(name);
@ -247,7 +265,7 @@ function showExtensionsDetails() {
callPopup(`<div class="extensions_info">${html}</div>`, 'text');
}
function loadExtensionSettings(settings) {
async function loadExtensionSettings(settings) {
if (settings.extension_settings) {
Object.assign(extension_settings, settings.extension_settings);
}
@ -256,6 +274,8 @@ function loadExtensionSettings(settings) {
$("#extensions_autoconnect").prop('checked', extension_settings.autoConnect).trigger('input');
// Activate offline extensions
extensionNames = await discoverExtensions();
manifests = await getManifests(extensionNames)
activateExtensions();
}