diff --git a/containers/libreportal/frontend/index.html b/containers/libreportal/frontend/index.html index 6113cf0..65172ac 100755 --- a/containers/libreportal/frontend/index.html +++ b/containers/libreportal/frontend/index.html @@ -86,6 +86,7 @@ + diff --git a/containers/libreportal/frontend/js/components/backup/backup-page.js b/containers/libreportal/frontend/js/components/backup/backup-page.js index 7eff02b..7e89d6b 100644 --- a/containers/libreportal/frontend/js/components/backup/backup-page.js +++ b/containers/libreportal/frontend/js/components/backup/backup-page.js @@ -94,6 +94,7 @@ class BackupPage { this.applyActiveTabUi(this.currentTab); this.bindEvents(); await this.refreshAll(); + await window.Dismissible?.load(); this.render(); this.updatePageHeader(); this.updatePrimaryAction(); @@ -213,7 +214,7 @@ class BackupPage { const dismissWarn = e.target.closest('[data-action="dismiss-config-warning"]'); if (dismissWarn) { - localStorage.setItem('libreportal:backup-config-warning-dismissed', '1'); + window.Dismissible?.dismiss('backup-config-warning'); const banner = dismissWarn.closest('.backup-warning-banner'); const divider = banner?.nextElementSibling; if (divider && divider.classList.contains('config-divider')) divider.remove(); @@ -830,10 +831,10 @@ class BackupPage { const body = document.getElementById('backup-configuration-body'); if (!body) return; - // The warning is a dismissible nudge, so its dismissed state lives in - // localStorage (per-browser) rather than server config. Banner + its - // divider are omitted entirely once dismissed. - const warningDismissed = localStorage.getItem('libreportal:backup-config-warning-dismissed') === '1'; + // Dismissed state is persisted server-side via Dismissible + // (data/ui-state.json), so it follows the user across browsers/devices. + // Banner + its divider are omitted entirely once dismissed. + const warningDismissed = !!window.Dismissible?.isDismissed('backup-config-warning'); const warningHTML = warningDismissed ? '' : `