export default function App() {
const [user, setUser] = useState();
const [appIsReady, setAppIsReady] = useState(false);
const restoreUser = async () => {
const user = await authStorage.getUser();
if (user) {
setUser(user);
}
return user;
};
useEffect(() => {
async function prepare() {
try {
await SplashScreen.preventAutoHideAsync();
const result = await restoreUser();
} catch (e) {
console.warn(e);
} finally {
setAppIsReady(true);
}
}
prepare();
}, []);
const onLayoutRootView = useCallback(async () => {
if (appIsReady) {
const result = await SplashScreen.hideAsync();
// console.log(result, 'hide?');
}
}, [appIsReady]);
if (!appIsReady) {
return null;
}
return (
<AuthContext.Provider value={{ user, setUser }}>
<OfflineNotice />
<NavigationContainer
ref={navigationRef}
theme={navigationTheme}
onReady={onLayoutRootView}
>
{user ? <AppNavigator /> : <AuthNavigator />}
</NavigationContainer>
</AuthContext.Provider>
);
}