Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

App.js 1.8KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  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 { ThemeProvider } from "@Styles";
  7. import '@i18n'
  8. import { useFonts } from "expo-font";
  9. import RootNavigation from "./navigation/RootNavigation";
  10. import { getData, getObjectData } from "./service/asyncStorage";
  11. import {
  12. JWT_REFRESH_TOKEN,
  13. JWT_TOKEN,
  14. LANGUAGE,
  15. } from "@Constants/localStorage";
  16. import { fetchUserSuccess } from "@Store/actions/login/loginActions";
  17. import { addHeaderToken } from "./request";
  18. import { useTranslation } from "react-i18next";
  19. function App() {
  20. const { i18n } = useTranslation();
  21. const dispatch = useDispatch();
  22. const initialSetup = async () => {
  23. const token = await getData(JWT_TOKEN);
  24. const refreshToken = await getData(JWT_REFRESH_TOKEN);
  25. const language = await getObjectData(LANGUAGE);
  26. if (language !== null) {
  27. await i18n.changeLanguage(language.code);
  28. }
  29. if (token) {
  30. addHeaderToken(token);
  31. }
  32. if (token !== undefined && refreshToken !== undefined) {
  33. dispatch(fetchUserSuccess({ jwt: token, refreshToken }));
  34. }
  35. };
  36. useEffect(() => {
  37. initialSetup();
  38. }, []);
  39. return (
  40. <NavigationContainer>
  41. <RootNavigation />
  42. </NavigationContainer>
  43. );
  44. }
  45. const AppWrapper = () => {
  46. const [fontsLoaded] = useFonts({
  47. "poppins-regular": require("./assets/fonts/Poppins-Regular.ttf"),
  48. "poppins-semibold": require("./assets/fonts/Poppins-SemiBold.ttf"),
  49. });
  50. if (!fontsLoaded) {
  51. return null;
  52. }
  53. return (
  54. <Provider store={store}>
  55. <ThemeProvider>
  56. <App />
  57. </ThemeProvider>
  58. </Provider>
  59. );
  60. };
  61. export default AppWrapper;