diff --git a/materialious/src/lib/api/youtubejs/subscriptions.ts b/materialious/src/lib/api/youtubejs/subscriptions.ts index ffb1f783..5b75f844 100644 --- a/materialious/src/lib/api/youtubejs/subscriptions.ts +++ b/materialious/src/lib/api/youtubejs/subscriptions.ts @@ -1,5 +1,5 @@ import { localDb } from '$lib/dexie'; -import { logoutStores } from '$lib/misc'; +import { clearCaches } from '$lib/misc'; import { cleanNumber } from '$lib/numbers'; import { relativeTimestamp } from '$lib/time'; import { get } from 'svelte/store'; @@ -44,7 +44,7 @@ export async function postSubscribeYTjs(authorId: string) { export async function deleteUnsubscribeYTjs(authorId: string) { await localDb.channelSubscriptions.where('channelId').equals(authorId).delete(); await localDb.subscriptionFeed.where('authorId').equals(authorId).delete(); - logoutStores(); + clearCaches(); } export async function parseChannelRSS(channelId: string): Promise { 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/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/routes/(app)/+layout.svelte b/materialious/src/routes/(app)/+layout.svelte index f522791a..49706547 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('/', {})); } @@ -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}
@@ -387,16 +386,14 @@