You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

App.js 1.4KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import "react-native-gesture-handler";
  2. import React, { useEffect } from "react";
  3. import { NavigationContainer } from "@react-navigation/native";
  4. import { Provider, useDispatch } from "react-redux";
  5. import store from "./store";
  6. import { useFonts } from "expo-font";
  7. import RootNavigation from "./navigation/RootNavigation";
  8. import { getData } from "./service/asyncStorage";
  9. import { JWT_REFRESH_TOKEN, JWT_TOKEN } from "./constants/localStorage";
  10. import { fetchUserSuccess } from "./store/actions/login/loginActions";
  11. import { addHeaderToken } from "./request";
  12. function App() {
  13. const dispatch = useDispatch();
  14. const getToken = async () => {
  15. const token = await getData(JWT_TOKEN);
  16. const refreshToken = await getData(JWT_REFRESH_TOKEN);
  17. if (token) {
  18. addHeaderToken(token);
  19. }
  20. if (token !== undefined && refreshToken !== undefined) {
  21. dispatch(fetchUserSuccess({ jwt: token, refreshToken }));
  22. }
  23. };
  24. useEffect(() => {
  25. getToken();
  26. }, []);
  27. return (
  28. <NavigationContainer>
  29. <RootNavigation />
  30. </NavigationContainer>
  31. );
  32. }
  33. const AppWrapper = () => {
  34. const [fontsLoaded] = useFonts({
  35. "poppins-regular": require("./assets/fonts/Poppins-Regular.ttf"),
  36. "poppins-semibold": require("./assets/fonts/Poppins-SemiBold.ttf"),
  37. });
  38. if (!fontsLoaded) {
  39. return null;
  40. }
  41. return (
  42. <Provider store={store}>
  43. <App />
  44. </Provider>
  45. );
  46. };
  47. export default AppWrapper;