generated from Dicken/dickendock
round69: Kurzes Aufblitzen des Classic-Designs beim Reload behoben (Design-Wahl jetzt zusaetzlich lokal zwischengespeichert)
This commit is contained in:
@@ -311,7 +311,29 @@ export function HomePage() {
|
|||||||
const showResults = isSearching && resultsVisible;
|
const showResults = isSearching && resultsVisible;
|
||||||
|
|
||||||
const isMobile = useIsMobile();
|
const isMobile = useIsMobile();
|
||||||
const useAndroidHome = isMobile && settings?.mobileHomeStyle === "android";
|
// WICHTIG: Bei einem ECHTEN Seiten-Reload (z. B. "mit Runterziehen
|
||||||
|
// aktualisieren" auf dem Handy) ist settings.mobileHomeStyle beim
|
||||||
|
// allerersten Render noch nicht geladen (React-Query-Cache ist nach einem
|
||||||
|
// vollständigen Reload leer, die Server-Antwort kommt erst asynchron
|
||||||
|
// nach) - bis dahin wäre "classic" der Standard-Fallback gewesen und kurz
|
||||||
|
// sichtbar aufgeblitzt, bevor auf "android" umgeschaltet wird (siehe
|
||||||
|
// Bugreport). Die zuletzt bekannte Wahl wird daher zusätzlich in
|
||||||
|
// localStorage gespiegelt (überlebt einen Reload, im Gegensatz zum
|
||||||
|
// React-Query-Cache) und beim allerersten Render schon genutzt, bevor die
|
||||||
|
// eigentliche Serverantwort da ist - dieselbe Technik wie beim
|
||||||
|
// Dark-Mode-Flash (siehe index.html).
|
||||||
|
const [cachedMobileHomeStyle, setCachedMobileHomeStyle] = useState<string | null>(() =>
|
||||||
|
typeof window !== "undefined" ? window.localStorage.getItem("launchpad:mobileHomeStyle") : null
|
||||||
|
);
|
||||||
|
useEffect(() => {
|
||||||
|
if (settings?.mobileHomeStyle && settings.mobileHomeStyle !== cachedMobileHomeStyle) {
|
||||||
|
window.localStorage.setItem("launchpad:mobileHomeStyle", settings.mobileHomeStyle);
|
||||||
|
setCachedMobileHomeStyle(settings.mobileHomeStyle);
|
||||||
|
}
|
||||||
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||||
|
}, [settings?.mobileHomeStyle]);
|
||||||
|
const effectiveMobileHomeStyle = settings?.mobileHomeStyle ?? cachedMobileHomeStyle ?? "classic";
|
||||||
|
const useAndroidHome = isMobile && effectiveMobileHomeStyle === "android";
|
||||||
|
|
||||||
const addReadLaterMutation = useMutation({
|
const addReadLaterMutation = useMutation({
|
||||||
mutationFn: (url: string) => saveReadLaterRequest(url),
|
mutationFn: (url: string) => saveReadLaterRequest(url),
|
||||||
|
|||||||
Reference in New Issue
Block a user