diff --git a/materialious/src/lib/components/settings/Interface.svelte b/materialious/src/lib/components/settings/Interface.svelte
index 3bada7f4..feb8345d 100644
--- a/materialious/src/lib/components/settings/Interface.svelte
+++ b/materialious/src/lib/components/settings/Interface.svelte
@@ -11,7 +11,7 @@
import type { RgbaColor, HsvaColor, Colord } from 'colord';
import { _ } from '$lib/i18n';
import { get } from 'svelte/store';
- import { ensureNoTrailingSlash, isMobile, logoutStores } from '../../misc';
+ import { ensureNoTrailingSlash, isMobile, clearCaches } from '../../misc';
import { getPages, type Pages } from '../../navPages';
import ColorPicker from 'svelte-awesome-color-picker';
import {
@@ -75,8 +75,8 @@
}
}
- function clearPreviousInstance() {
- logoutStores();
+ function reloadState() {
+ clearCaches();
ui('#dialog-settings');
goto(resolve('/', {}), { replaceState: true });
location.reload();
@@ -113,13 +113,14 @@
instanceStore.set(instance);
- clearPreviousInstance();
+ reloadState();
+ authStore.set(null);
}
async function setBackend(event: Event) {
const select = event.target as HTMLSelectElement;
backendInUseStore.set(select.value as 'ivg' | 'yt');
- clearPreviousInstance();
+ reloadState();
}
function allowInsecureRequests() {
diff --git a/materialious/src/lib/components/settings/Settings.svelte b/materialious/src/lib/components/settings/Settings.svelte
index f8bd0a78..72196a2c 100644
--- a/materialious/src/lib/components/settings/Settings.svelte
+++ b/materialious/src/lib/components/settings/Settings.svelte
@@ -129,14 +129,13 @@
-
- {#each tabs as tab (tab)}
-
-
-
- {/each}
+
+ {#each tabs as tab (tab)}
+
+
+
+ {/each}
+
@@ -172,12 +172,20 @@
diff --git a/materialious/src/lib/i18n/locales/en.json b/materialious/src/lib/i18n/locales/en.json
index cc78e79f..2fcc2c38 100644
--- a/materialious/src/lib/i18n/locales/en.json
+++ b/materialious/src/lib/i18n/locales/en.json
@@ -179,7 +179,14 @@
"warning": "Advanced settings! For experienced users only. Do not change unless you know what you’re doing.",
"cull": "Max feed items",
"cooldown": "Re-fetch channel hour cooldown",
- "fallbacks": "Fallbacks"
+ "fallbacks": "Fallbacks",
+ "importExport": "Import/Export subscriptions",
+ "exportToInvidious": "Export to Invidious from Materialious",
+ "importToMaterialious": "Import from Invidious to Materialious",
+ "importingToMaterialious": "Importing to Materialious began",
+ "importingToMaterialiousFinished": "Importing to Materialious finished",
+ "exportingToInvidious": "Exporting to Invidious began",
+ "exportingToInvidiousFinished": "Exporting to Invidious finished"
},
"player": {
"title": "Player",
diff --git a/materialious/src/lib/misc.ts b/materialious/src/lib/misc.ts
index 98392262..1c788326 100644
--- a/materialious/src/lib/misc.ts
+++ b/materialious/src/lib/misc.ts
@@ -233,8 +233,7 @@ export function isYTBackend(): boolean {
return get(backendInUseStore) === 'yt' && Capacitor.isNativePlatform();
}
-export function logoutStores() {
- authStore.set(null);
+export function clearCaches() {
feedCacheStore.set({});
searchCacheStore.set({});
playlistCacheStore.set({});
diff --git a/materialious/src/lib/navPages.ts b/materialious/src/lib/navPages.ts
index 3081303c..f390a959 100644
--- a/materialious/src/lib/navPages.ts
+++ b/materialious/src/lib/navPages.ts
@@ -1,12 +1,13 @@
import { _ } from '$lib/i18n';
import { get } from 'svelte/store';
import { isYTBackend } from './misc';
+import { authStore } from './store';
export type Pages = { icon: string; href: string; name: string; requiresAuth: boolean }[];
// Must be a func do to how i18n is loaded
export function getPages(): Pages {
- return [
+ let pages: Pages = [
{
icon: 'home',
href: !isYTBackend() ? '/' : '/subscriptions',
@@ -26,4 +27,10 @@ export function getPages(): Pages {
requiresAuth: true
}
];
+
+ pages = pages.filter((page) => {
+ return !page.requiresAuth || (get(authStore) && !isYTBackend());
+ });
+
+ return pages;
}
diff --git a/materialious/src/lib/store.ts b/materialious/src/lib/store.ts
index feb5fe7c..4caa8eca 100644
--- a/materialious/src/lib/store.ts
+++ b/materialious/src/lib/store.ts
@@ -315,7 +315,7 @@ export const deArrowThumbnailInstanceStore = persist(
);
export const engineCullYTStore: Writable
= persist(
- writable(1000),
+ writable(500),
createStorage(),
'engineCullYT'
);
diff --git a/materialious/src/routes/(app)/+layout.svelte b/materialious/src/routes/(app)/+layout.svelte
index f522791a..7b272735 100644
--- a/materialious/src/routes/(app)/+layout.svelte
+++ b/materialious/src/routes/(app)/+layout.svelte
@@ -39,7 +39,7 @@
import { _ } from '$lib/i18n';
import { get } from 'svelte/store';
import { pwaInfo } from 'virtual:pwa-info';
- import { isYTBackend, logoutStores, truncate } from '$lib/misc';
+ import { isYTBackend, clearCaches, truncate } from '$lib/misc';
import Author from '$lib/components/Author.svelte';
import Toast from '$lib/components/Toast.svelte';
@@ -179,7 +179,8 @@
}
function logout() {
- logoutStores();
+ authStore.set(null);
+ clearCaches();
goto(resolve('/', {}));
}
@@ -236,7 +237,7 @@
setTheme();
setAmoledTheme();
- if (isLoggedIn) {
+ if (isLoggedIn && !isYTBackend()) {
loadNotifications().catch(() => authStore.set(null));
}
@@ -269,12 +270,10 @@
{/if}
{#each getPages() as navPage (navPage)}
- {#if !navPage.requiresAuth || isLoggedIn}
- {navPage.icon}
- {navPage.name}
-
- {/if}
+ {navPage.icon}
+ {navPage.name}
+
{/each}
{#if $isAndroidTvStore}
@@ -345,7 +344,7 @@
group
{$_('layout.syncParty')}
- {#if isLoggedIn}
+ {#if isLoggedIn && !isYTBackend()}