fix: dynamic extension loading did not use cache key (#3641)

This commit is contained in:
dni ⚡ 2025-12-08 15:44:18 +01:00 committed by GitHub
parent b7fdf99a8d
commit cacffc67ee
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 10 additions and 4 deletions

View file

@ -113,6 +113,7 @@ def template_renderer(additional_folders: list | None = None) -> Jinja2Templates
"LNBITS_EXT_BUILDER": settings.lnbits_extensions_builder_activate_non_admins, "LNBITS_EXT_BUILDER": settings.lnbits_extensions_builder_activate_non_admins,
"LNBITS_CURRENCIES": list(currencies.keys()), "LNBITS_CURRENCIES": list(currencies.keys()),
"LNBITS_ALLOWED_CURRENCIES": settings.lnbits_allowed_currencies, "LNBITS_ALLOWED_CURRENCIES": settings.lnbits_allowed_currencies,
"CACHE_KEY": settings.server_startup_time,
} }
t.env.globals["WINDOW_SETTINGS"] = window_settings t.env.globals["WINDOW_SETTINGS"] = window_settings

File diff suppressed because one or more lines are too long

View file

@ -1,8 +1,13 @@
window._lnbitsUtils = { window._lnbitsUtils = {
url_for(url) {
const _url = new URL(url, window.location.origin)
_url.searchParams.set('v', WINDOW_SETTINGS.CACHE_KEY)
return _url.toString()
},
loadScript(src) { loadScript(src) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
const script = document.createElement('script') const script = document.createElement('script')
script.src = src script.src = this.url_for(src)
script.onload = () => { script.onload = () => {
resolve() resolve()
} }
@ -13,7 +18,7 @@ window._lnbitsUtils = {
}) })
}, },
async loadTemplate(url) { async loadTemplate(url) {
return fetch(url) return fetch(this.url_for(url))
.then(response => { .then(response => {
if (!response.ok) { if (!response.ok) {
throw new Error(`Failed to load template from ${url}`) throw new Error(`Failed to load template from ${url}`)

View file

@ -27,7 +27,7 @@
<meta name="apple-mobile-web-app-capable" content="yes" /> <meta name="apple-mobile-web-app-capable" content="yes" />
<link <link
rel="apple-touch-icon" rel="apple-touch-icon"
href="{{ LNBITS_APPLE_TOUCH_ICON if LNBITS_APPLE_TOUCH_ICON else static_url_for('static', 'images/maskable_icon.png') }}" href="{{ LNBITS_APPLE_TOUCH_ICON or static_url_for('static', 'images/maskable_icon.png') }}"
/> />
{% if web_manifest %} {% if web_manifest %}
<link async="async" rel="manifest" href="{{ web_manifest }}" /> <link async="async" rel="manifest" href="{{ web_manifest }}" />