46 lines
1.2 KiB
JavaScript
46 lines
1.2 KiB
JavaScript
import { createContext, useState, useContext, useEffect, useMemo } from 'react';
|
|
import { navigationRef } from '../navigation/navigationService';
|
|
import { useAppStatus } from './appStatus';
|
|
|
|
// Initiate context
|
|
const AuthStatusManager = createContext(null);
|
|
|
|
const AuthStatusProvider = ({ children }) => {
|
|
const { appState, shouldResetStateRef } = useAppStatus();
|
|
const [authResetkey, setAuthResetKey] = useState(0);
|
|
|
|
useEffect(() => {
|
|
if (appState === 'active' && shouldResetStateRef.current) {
|
|
setAuthResetKey(prev => prev + 1);
|
|
if (navigationRef.current)
|
|
navigationRef.current.reset({
|
|
index: 0,
|
|
routes: [{ name: 'SplashReload' }],
|
|
});
|
|
}
|
|
}, [appState]);
|
|
|
|
const contextValue = useMemo(
|
|
() => ({
|
|
authResetkey,
|
|
}),
|
|
[authResetkey],
|
|
);
|
|
|
|
return (
|
|
<AuthStatusManager.Provider value={contextValue}>
|
|
{children}
|
|
</AuthStatusManager.Provider>
|
|
);
|
|
};
|
|
|
|
function useAuthContext() {
|
|
const context = useContext(AuthStatusManager);
|
|
if (!context) {
|
|
throw new Error('useAuthContext must be used within a AuthContextProvider');
|
|
}
|
|
return context;
|
|
}
|
|
|
|
export { AuthStatusManager, AuthStatusProvider, useAuthContext };
|