diff --git a/apps/mobile/src/lib/auth-provider/firebase.ts b/apps/mobile/src/lib/auth-provider/firebase.ts index 170dd02..4306ced 100644 --- a/apps/mobile/src/lib/auth-provider/firebase.ts +++ b/apps/mobile/src/lib/auth-provider/firebase.ts @@ -13,6 +13,7 @@ import { } from "firebase/auth"; import * as fbAuth from "firebase/auth"; import AsyncStorage from "@react-native-async-storage/async-storage"; +import { Platform } from "react-native"; import type { AuthProvider, AuthUser, Unsubscribe } from "./types"; /** @@ -37,10 +38,16 @@ const getReactNativePersistence = ( fbAuth as unknown as { getReactNativePersistence: (storage: unknown) => Persistence } ).getReactNativePersistence; -// AsyncStorage-persistens så inloggningen överlever app-omstart. +// Persistens så inloggningen överlever omstart. På webben (react-native-web) +// finns INTE getReactNativePersistence/AsyncStorage – att anropa dem kraschar +// hela appen vid start ("Cannot read properties of undefined (reading 'bind')"). +// Där använder vi Firebases standard-webblagring (getAuth), på native AsyncStorage. let auth: Auth; try { - auth = initializeAuth(app, { persistence: getReactNativePersistence(AsyncStorage) }); + auth = + Platform.OS === "web" + ? getAuth(app) + : initializeAuth(app, { persistence: getReactNativePersistence(AsyncStorage) }); } catch { // initializeAuth kastar om den redan körts (Fast Refresh) – återanvänd instansen. auth = getAuth(app);