App copy
This commit is contained in:
@@ -194,8 +194,13 @@ export const AppProvider: React.FC<{ children: React.ReactNode }> = ({ children
|
||||
setBillingSummary(null);
|
||||
setPlants([]);
|
||||
setLanguage(getDeviceLanguage());
|
||||
setAppearanceModeState('system');
|
||||
setColorPaletteState('forest');
|
||||
// Theme ist eine GERAETE-Einstellung, keine Kontodaten. Beim Ausloggen oder
|
||||
// beim Start ohne Session darf sie deshalb nicht auf die Defaults fallen -
|
||||
// sonst landet ein Gast nach jedem Neustart wieder auf Dark/Forest.
|
||||
const deviceAppearance = AppMetaDb.get('appearance_mode');
|
||||
setAppearanceModeState(deviceAppearance && isAppearanceMode(deviceAppearance) ? deviceAppearance : 'system');
|
||||
const devicePalette = AppMetaDb.get('color_palette');
|
||||
setColorPaletteState(devicePalette && isColorPalette(devicePalette) ? devicePalette : 'forest');
|
||||
setProfileNameState('');
|
||||
setProfileImageUri(null);
|
||||
setIsLoadingPlants(false);
|
||||
@@ -385,6 +390,18 @@ export const AppProvider: React.FC<{ children: React.ReactNode }> = ({ children
|
||||
setHasCompletedOnboarding(true);
|
||||
}
|
||||
|
||||
// Theme sofort aus dem Geraetespeicher setzen - vor Session-Restore und
|
||||
// vor dem Server-Roundtrip. Danach ueberschreibt hydrateSession ggf. mit
|
||||
// den nutzerspezifischen Werten, die aber identisch sein sollten.
|
||||
const storedAppearance = AppMetaDb.get('appearance_mode');
|
||||
if (storedAppearance && isAppearanceMode(storedAppearance)) {
|
||||
setAppearanceModeState(storedAppearance);
|
||||
}
|
||||
const storedPalette = AppMetaDb.get('color_palette');
|
||||
if (storedPalette && isColorPalette(storedPalette)) {
|
||||
setColorPaletteState(storedPalette);
|
||||
}
|
||||
|
||||
const s = await AuthService.getSession();
|
||||
if (!s) {
|
||||
resetStateForSignedOutUser();
|
||||
@@ -516,11 +533,17 @@ export const AppProvider: React.FC<{ children: React.ReactNode }> = ({ children
|
||||
|
||||
const setAppearanceMode = useCallback((mode: AppearanceMode) => {
|
||||
setAppearanceModeState(mode);
|
||||
// Geraeteweit speichern, unabhaengig von einer Session: sonst geht die
|
||||
// Auswahl fuer Gaeste beim Neustart verloren, und eingeloggte Nutzer sehen
|
||||
// beim Start kurz das Default-Theme, weil die Nutzer-Settings erst nach
|
||||
// hydrateSession (inkl. Server-Roundtrip) geladen werden.
|
||||
AppMetaDb.set('appearance_mode', mode);
|
||||
if (session) SettingsDb.setAppearanceMode(session.userId, mode);
|
||||
}, [session]);
|
||||
|
||||
const setColorPalette = useCallback((palette: ColorPalette) => {
|
||||
setColorPaletteState(palette);
|
||||
AppMetaDb.set('color_palette', palette);
|
||||
if (session) SettingsDb.setColorPalette(session.userId, palette);
|
||||
}, [session]);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user