Kliko/app/index.tsx
2024-08-13 09:17:19 +02:00

56 lines
1.6 KiB
TypeScript

import React, { useEffect } from 'react';
import { Redirect, useRouter } from 'expo-router';
import { useTranslation } from 'react-i18next';
import '@/lib/localization/i18n';
import { ThemedText } from '@/lib/components/ThemedText';
import { ThemedView } from '@/lib/components/ThemedView';
import { useToken } from '@/lib/context/AppProvider';
import { Request } from '@/lib/services/request';
import { store } from '@/lib/store/store';
import { setSession } from '@/lib/store/dataStore';
export default function OnboardStartScreen() {
const { token, isLoading } = useToken();
const { i18n } = useTranslation();
const router = useRouter();
const loadingScreen = () => (
<ThemedView>
<ThemedText>Loading...</ThemedText>
</ThemedView>
);
useEffect( () => {
const fetchData = async () => {
const response = await Request.post( 'sessions/get', { token: token } );
if (response.success) {
// Save to store
store.dispatch(setSession(response.session))
// Set language
i18n.changeLanguage(response.session.language);
// @ts-ignore
router.replace( '/(tabs)' );
} else {
router.replace( '/(onboarding)/start' );
}
};
if (!isLoading && token) {
fetchData();
}
}, [ isLoading, token, router ] );
if (isLoading) {
return loadingScreen();
}
if (!token) {
return <Redirect href="/(onboarding)/start"/>;
}
return loadingScreen();
}