From 63b866cecb6bc58d15f34e35c9c8316bc1589043 Mon Sep 17 00:00:00 2001 From: WardPearce Date: Fri, 2 Jan 2026 20:31:54 +1300 Subject: [PATCH] Fix to timing issue android persist stores --- materialious/src/lib/components/Player.svelte | 1 + materialious/src/routes/+layout.ts | 19 ++++++++++++++++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/materialious/src/lib/components/Player.svelte b/materialious/src/lib/components/Player.svelte index 4a09c055..deb01c38 100644 --- a/materialious/src/lib/components/Player.svelte +++ b/materialious/src/lib/components/Player.svelte @@ -967,6 +967,7 @@ // Force android to tap an addtional time. if (Capacitor.getPlatform() === 'android' && androidFirstTap) { + clickCount = 0; androidFirstTap = false; return; } diff --git a/materialious/src/routes/+layout.ts b/materialious/src/routes/+layout.ts index 76d4e0a6..ed0b9426 100644 --- a/materialious/src/routes/+layout.ts +++ b/materialious/src/routes/+layout.ts @@ -6,9 +6,12 @@ import { getResolveUrl } from '$lib/api'; import '$lib/i18n'; // Import to initialize. Important :) import { initI18n } from '$lib/i18n'; import { getPages } from '$lib/navPages'; -import { authStore, interfaceDefaultPage, isAndroidTvStore } from '$lib/store'; +import { authStore, instanceStore, interfaceDefaultPage, isAndroidTvStore } from '$lib/store'; import { get } from 'svelte/store'; import '$lib/android/http/androidRequests'; +import { Capacitor } from '@capacitor/core'; +import { Preferences } from '@capacitor/preferences'; +import { deserialize } from '@macfja/serializer'; export const ssr = false; @@ -19,6 +22,20 @@ export async function load({ url }) { isAndroidTvStore.set((await androidTv.isAndroidTv()).value); + // Due to race condition with how we set & save persistent store values + // we manually set stores like auth & instance before load. + if (Capacitor.getPlatform() === 'android') { + const instancePreferences = await Preferences.get({ key: 'invidiousInstance' }); + if (instancePreferences.value !== null) { + instanceStore.set(deserialize(instancePreferences.value)); + } + + const authPreferences = await Preferences.get({ key: 'authToken' }); + if (authPreferences.value !== null) { + authStore.set(deserialize(authPreferences.value)); + } + } + const resolvedRoot = resolve('/', {}); if (url.pathname.startsWith(resolvedRoot + '@')) { const username = url.pathname.substring(resolvedRoot.length).split('/')[0];