diff --git a/frontend/main.js b/frontend/main.js index a434cce..5574e46 100644 --- a/frontend/main.js +++ b/frontend/main.js @@ -61,6 +61,14 @@ async function initClient () { window.client = createClient(OliveTinApiService, transport) window.initResponse = await window.client.init({}) + if (window.initResponse.enableCustomJs) { + const script = document.createElement('script') + script.src = '/custom-webui/custom.js' + script.async = true + script.id = 'olivetin-custom-js' + document.head.appendChild(script) + } + const i18nSettings = createI18n({ legacy: false, locale: getSelectedLanguage(), diff --git a/frontend/resources/vue/App.vue b/frontend/resources/vue/App.vue index 5c1fa52..5648191 100644 --- a/frontend/resources/vue/App.vue +++ b/frontend/resources/vue/App.vue @@ -231,6 +231,7 @@ function updateHeaderFromInit() { } applyStyleMods() + loadCustomJsIfEnabled() renderNavigation() applyTheme() @@ -369,6 +370,17 @@ function applyTheme() { } } +function loadCustomJsIfEnabled() { + if (!window.initResponse?.enableCustomJs || document.getElementById('olivetin-custom-js')) { + return + } + const script = document.createElement('script') + script.src = '/custom-webui/custom.js' + script.async = true + script.id = 'olivetin-custom-js' + document.head.appendChild(script) +} + function applyStyleMods() { if (!window.initResponse || !window.initResponse.styleMods) { return