1- import { createContext , useState , useContext } from "react" ;
1+ import { createContext , useState , useContext , useEffect } from "react" ;
2+ import { Typography } from "../../components/Typography" ;
3+ import { SECURE_STORAGE_KEYS } from "../../common/constants" ;
4+ import * as SecureStore from "expo-secure-store" ;
25
36type AppModeContextType = {
4- appMode ? : "citizen" | "observer" ;
5- setAppMode : ( appMode : "citizen" | "observer" ) => void ;
7+ appMode : "citizen" | "observer" | "onboarding ";
8+ setAppMode : ( appMode : "citizen" | "observer" | "onboarding" ) => void ;
69
710 onboardingComplete : boolean ;
811 setOnboardingComplete : ( onboardingComplete : boolean ) => void ;
@@ -11,12 +14,30 @@ type AppModeContextType = {
1114export const AppModeContext = createContext < AppModeContextType | null > ( null ) ;
1215
1316const AppModeContextProvider = ( { children } : React . PropsWithChildren ) => {
14- const [ appMode , setAppMode ] = useState < "citizen" | "observer" > ( ) ;
17+ const [ appMode , setAppMode ] = useState < "citizen" | "observer" | "onboarding" > ( ) ;
1518 const [ onboardingComplete , setOnboardingComplete ] = useState < boolean > ( false ) ;
19+ console . log ( "AppModeContextProvider" , appMode ) ;
20+
21+ useEffect ( ( ) => {
22+ const storedAppMode = SecureStore . getItem ( SECURE_STORAGE_KEYS . ONBOARDING_NEW_COMPLETE ) ;
23+ // if no appMode has been set it should be onboarding to avoid flickering
24+ const appMode = storedAppMode ? ( storedAppMode as "citizen" | "observer" ) : "onboarding" ;
25+ setAppMode ( appMode ) ;
26+ } , [ ] ) ;
27+
28+ const handleSetAppMode = ( appMode : "citizen" | "observer" | "onboarding" ) => {
29+ console . log ( "handleSetAppMode" , appMode ) ;
30+ setAppMode ( appMode ) ;
31+ SecureStore . setItem ( SECURE_STORAGE_KEYS . ONBOARDING_NEW_COMPLETE , appMode ) ;
32+ } ;
33+
34+ if ( ! appMode ) {
35+ return < Typography > Loading...</ Typography > ;
36+ }
1637
1738 return (
1839 < AppModeContext . Provider
19- value = { { appMode, setAppMode, onboardingComplete, setOnboardingComplete } }
40+ value = { { appMode, setAppMode : handleSetAppMode , onboardingComplete, setOnboardingComplete } }
2041 >
2142 { children }
2243 </ AppModeContext . Provider >
0 commit comments