diff --git a/src/App.vue b/src/App.vue index 34eda49..dc0dee4 100644 --- a/src/App.vue +++ b/src/App.vue @@ -24,7 +24,10 @@ import Artist from '@/components/Artist.vue'; const Genres = defineAsyncComponent(() => import('@/components/Genres.vue')), Charts = defineAsyncComponent(() => import('@/components/Charts.vue')), Library = defineAsyncComponent(() => import('@/components/Library.vue')), - Prefs = defineAsyncComponent(() => import('@/components/Prefs.vue')); + Prefs = defineAsyncComponent(() => import('@/components/Prefs.vue')), + RestorePrefs = defineAsyncComponent(() => + import('@/components/RestorePrefs.vue'), + ); /* Composables */ import { useStore, useUnwrap } from '@/scripts/util.js'; @@ -87,6 +90,9 @@ function parseUrl() { case 'prefs': nav.state.page = 'prefs'; break; + case 'restore': + nav.state.page = 'restore'; + break; default: console.log(loc); break; @@ -201,6 +207,8 @@ onMounted(() => { @open-playlist="results.getAlbum" /> + + diff --git a/src/components/Prefs.vue b/src/components/Prefs.vue index b26c418..af025a4 100644 --- a/src/components/Prefs.vue +++ b/src/components/Prefs.vue @@ -24,7 +24,8 @@ const { t, setupLocale } = useI18n(), next = ref(false), compact = ref(false), prm = ref(false), - cc = ref(false); + cc = ref(false), + restoreUrl = ref(''); getJson('https://piped-instances.kavin.rocks') .then(i => i || getJson('https://instances.tokhmi.xyz')) @@ -40,6 +41,16 @@ getJson('https://raw.codeberg.page/Hyperpipe/pages/api/backend.json').then( }, ); +const getRestoreUrl = () => { + const params = new URLSearchParams(); + Object.keys(window.localStorage).forEach(key => { + params.set(key, window.localStorage.getItem(key)); + }); + restoreUrl.value = window.location.origin + '/restore/?' + params; +}; + +getRestoreUrl(); + function getBool(val) { return 'bi ' + (val ? 'bi-check2' : 'bi-x-lg'); } @@ -362,6 +373,9 @@ onMounted(() => { +

{{ t('title.restore_prefs') }}

+ {{ restoreUrl }} +