From ebdae15838cf44bcac66c0147c12a6f6f9ba0c3b Mon Sep 17 00:00:00 2001 From: librelad Date: Mon, 1 Jun 2026 10:28:58 +0100 Subject: [PATCH] feat(webui): deep-link the Migrate sub-tabs (/overview/migrate/{restore,peers}) Co-Authored-By: Claude Opus 4.8 --- .../components/apps/overview/js/overview-manager.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/containers/libreportal/frontend/components/apps/overview/js/overview-manager.js b/containers/libreportal/frontend/components/apps/overview/js/overview-manager.js index 3c1d65b..6b13037 100644 --- a/containers/libreportal/frontend/components/apps/overview/js/overview-manager.js +++ b/containers/libreportal/frontend/components/apps/overview/js/overview-manager.js @@ -166,10 +166,12 @@ class OverviewManager { // ---- Migrate tab: Restore (standalone MigratePage) + Peers (PeersPage) ---- mountMigrate() { - this.switchMigrateSub(this._migrateSub || 'restore'); + const seg = window.location.pathname.replace(/^\/overview\/migrate\/?/, '').split('/')[0]; + const sub = (seg === 'peers' || seg === 'restore') ? seg : (this._migrateSub || 'restore'); + this.switchMigrateSub(sub, { fromUrl: true }); } - switchMigrateSub(sub) { + switchMigrateSub(sub, opts = {}) { this._migrateSub = sub; const pane = document.getElementById('ov-pane-migrate'); if (!pane) return; @@ -177,6 +179,7 @@ class OverviewManager { pane.querySelectorAll('.ov-subtabs-content .tab-panel[data-ov-subtab]').forEach((p) => p.classList.toggle('active', p.dataset.ovSubtab === sub)); if (sub === 'restore') this._mountRestore(); else if (sub === 'peers') this._mountPeers(); + if (!opts.fromUrl) this._pushUrl(`/overview/migrate/${sub}`, true); } async _mountRestore() {