| import { NavigationContainer } from "@react-navigation/native"; | import { NavigationContainer } from "@react-navigation/native"; | ||||
| import { Provider, useDispatch } from "react-redux"; | import { Provider, useDispatch } from "react-redux"; | ||||
| import store from "./store"; | import store from "./store"; | ||||
| import { ThemeProvider } from "@Styles"; | |||||
| import { ThemeProvider } from "@styles"; | |||||
| import '@i18n' | import '@i18n' | ||||
| import { useFonts } from "expo-font"; | import { useFonts } from "expo-font"; | ||||
| import RootNavigation from "./navigation/RootNavigation"; | import RootNavigation from "./navigation/RootNavigation"; | ||||
| import { getData, getObjectData } from "./service/asyncStorage"; | |||||
| import { getData, getObjectData } from "@service/asyncStorage"; | |||||
| import { | import { | ||||
| JWT_REFRESH_TOKEN, | JWT_REFRESH_TOKEN, | ||||
| JWT_TOKEN, | JWT_TOKEN, | ||||
| LANGUAGE, | LANGUAGE, | ||||
| } from "@Constants/localStorage"; | |||||
| import { fetchUserSuccess } from "@Store/actions/login/loginActions"; | |||||
| import { addHeaderToken } from "./request"; | |||||
| } from "@constants/localStorage"; | |||||
| import { fetchUserSuccess } from "@store/actions/login/loginActions"; | |||||
| import { addHeaderToken } from "@request/index"; | |||||
| import { useTranslation } from "react-i18next"; | import { useTranslation } from "react-i18next"; | ||||
| function App() { | function App() { |
| "module-resolver", | "module-resolver", | ||||
| { | { | ||||
| alias: { | alias: { | ||||
| "@Navigation": "./navigation", | |||||
| "@Components": "./components", | |||||
| "@Screens": "./screens", | |||||
| "@Assets": "./assets", | |||||
| "@Store": './store', | |||||
| "@Styles": './styles', | |||||
| "@Utils": "./utils", | |||||
| "@Schemas": "./schemas", | |||||
| "@InitialValues": "./initialValues", | |||||
| "@Constants": "./constants", | |||||
| "@Service": "./service", | |||||
| "@navigation": "./navigation", | |||||
| "@components": "./components", | |||||
| "@screens": "./screens", | |||||
| "@assets": "./assets", | |||||
| "@store": './store', | |||||
| "@styles": './styles', | |||||
| "@utils": "./utils", | |||||
| "@schemas": "./schemas", | |||||
| "@initialValues": "./initialValues", | |||||
| "@constants": "./constants", | |||||
| "@service": "./service", | |||||
| "@i18n": "./i18n", | "@i18n": "./i18n", | ||||
| "@Request": "./request" | |||||
| "@request": "./request" | |||||
| } | } | ||||
| } | } | ||||
| ] | ] |
| import { MaterialIcons } from "@expo/vector-icons"; | import { MaterialIcons } from "@expo/vector-icons"; | ||||
| import { Ionicons } from "@expo/vector-icons"; | import { Ionicons } from "@expo/vector-icons"; | ||||
| import { useDispatch } from "react-redux"; | import { useDispatch } from "react-redux"; | ||||
| import { logoutUser } from "../../store/actions/login/loginActions"; | |||||
| import { logoutUser } from "@store/actions/login/loginActions"; | |||||
| import useAuthHook from "../../hooks/useAuthHook"; | import useAuthHook from "../../hooks/useAuthHook"; | ||||
| import { useTheme } from "@Styles"; | |||||
| import { useTheme } from "@styles"; | |||||
| import { useTranslation } from "react-i18next"; | import { useTranslation } from "react-i18next"; | ||||
| const CustomDrawer = (props) => { | const CustomDrawer = (props) => { |
| StyleSheet, | StyleSheet, | ||||
| } from "react-native"; | } from "react-native"; | ||||
| import { globalStyles } from "../styles/global"; | import { globalStyles } from "../styles/global"; | ||||
| import { useTheme } from "@Styles"; | |||||
| import { useTheme } from "@styles"; | |||||
| const InputField = ({ | const InputField = ({ | ||||
| label, | label, |
| import React from "react"; | import React from "react"; | ||||
| import { View } from "react-native"; | import { View } from "react-native"; | ||||
| import { useTheme } from "@Styles"; | |||||
| import { useTheme } from "@styles"; | |||||
| const Layout = ({ children }) => { | const Layout = ({ children }) => { | ||||
| const { colors } = useTheme(); | const { colors } = useTheme(); |
| import React from "react"; | import React from "react"; | ||||
| import { View, Text, Image, TouchableOpacity, StyleSheet } from "react-native"; | import { View, Text, Image, TouchableOpacity, StyleSheet } from "react-native"; | ||||
| import { globalStyles } from "@Styles/global"; | |||||
| import { windowWidth } from "@Utils/Dimensions"; | |||||
| import { useTheme } from "@Styles"; | |||||
| import { globalStyles } from "@styles/global"; | |||||
| import { windowWidth } from "@utils/Dimensions"; | |||||
| import { useTheme } from "@styles"; | |||||
| import { useTranslation } from "react-i18next"; | import { useTranslation } from "react-i18next"; | ||||
| const ListItem = ({ photo, title, onPress, publishedAt }) => { | const ListItem = ({ photo, title, onPress, publishedAt }) => { |
| import React from "react"; | import React from "react"; | ||||
| import { createDrawerNavigator } from "@react-navigation/drawer"; | import { createDrawerNavigator } from "@react-navigation/drawer"; | ||||
| import CustomDrawer from "@Components/CustomDrawer/CustomDrawer"; | |||||
| import CustomDrawer from "@components/CustomDrawer/CustomDrawer"; | |||||
| import TabNavigator from "./TabNavigator"; | import TabNavigator from "./TabNavigator"; | ||||
| import Ionicons from "@expo/vector-icons/Ionicons"; | import Ionicons from "@expo/vector-icons/Ionicons"; | ||||
| import SettingsScreen from "@Screens/SettingsScreen"; | |||||
| import ProfileScreen from "@Screens/ProfileScreen"; | |||||
| import { useTheme } from "@Styles"; | |||||
| import SettingsScreen from "@screens/SettingsScreen"; | |||||
| import ProfileScreen from "@screens/ProfileScreen"; | |||||
| import { useTheme } from "@styles"; | |||||
| import { useTranslation } from "react-i18next"; | import { useTranslation } from "react-i18next"; | ||||
| const Drawer = createDrawerNavigator(); | const Drawer = createDrawerNavigator(); |
| import AuthStack from "./AuthStack"; | import AuthStack from "./AuthStack"; | ||||
| import { SafeAreaView } from "react-native"; | import { SafeAreaView } from "react-native"; | ||||
| import { useSelector } from "react-redux"; | import { useSelector } from "react-redux"; | ||||
| import { selectTokens } from "@Store/selectors/loginSelectors"; | |||||
| import { selectTokens } from "@store/selectors/loginSelectors"; | |||||
| import { StatusBar } from "expo-status-bar"; | import { StatusBar } from "expo-status-bar"; | ||||
| import { useTheme } from "@Styles"; | |||||
| import { useTheme } from "@styles"; | |||||
| const RootNavigation = () => { | const RootNavigation = () => { | ||||
| const { isDark, colors } = useTheme(); | const { isDark, colors } = useTheme(); |
| import { createBottomTabNavigator } from "@react-navigation/bottom-tabs"; | import { createBottomTabNavigator } from "@react-navigation/bottom-tabs"; | ||||
| import { getFocusedRouteNameFromRoute } from "@react-navigation/native"; | import { getFocusedRouteNameFromRoute } from "@react-navigation/native"; | ||||
| import HomeScreen from "@Screens/HomeScreen"; | |||||
| import HomeScreen from "@screens/HomeScreen"; | |||||
| import Ionicons from "@expo/vector-icons/Ionicons"; | import Ionicons from "@expo/vector-icons/Ionicons"; | ||||
| import FavoriteScreen from "@Screens/FavoriteScreen"; | |||||
| import PostDetailsScreen from "@Screens/PostDetailsScreen"; | |||||
| import { useTheme } from "@Styles"; | |||||
| import FavoriteScreen from "@screens/FavoriteScreen"; | |||||
| import PostDetailsScreen from "@screens/PostDetailsScreen"; | |||||
| import { useTheme } from "@styles"; | |||||
| const Tab = createBottomTabNavigator(); | const Tab = createBottomTabNavigator(); | ||||
| const Stack = createNativeStackNavigator(); | const Stack = createNativeStackNavigator(); |
| import React from "react"; | import React from "react"; | ||||
| import { View, Text, StyleSheet } from "react-native"; | import { View, Text, StyleSheet } from "react-native"; | ||||
| import Layout from "@Components/Layout/Layout"; | |||||
| import { useTheme } from "@Styles"; | |||||
| import Layout from "@components/Layout/Layout"; | |||||
| import { useTheme } from "@styles"; | |||||
| const FavoriteScreen = () => { | const FavoriteScreen = () => { | ||||
| const { colors } = useTheme(); | const { colors } = useTheme(); |
| StyleSheet, | StyleSheet, | ||||
| } from "react-native"; | } from "react-native"; | ||||
| import Feather from "@expo/vector-icons/Feather"; | import Feather from "@expo/vector-icons/Feather"; | ||||
| import ListItem from "@Components/ListItem/ListItem"; | |||||
| import ListItem from "@components/ListItem/ListItem"; | |||||
| import filter from "lodash.filter"; | import filter from "lodash.filter"; | ||||
| import { globalStyles } from "@Styles/global"; | |||||
| import { getRequest } from "@Request/index"; | |||||
| import Layout from "@Components/Layout/Layout"; | |||||
| import { useTheme } from "@Styles"; | |||||
| import { globalStyles } from "@styles/global"; | |||||
| import { getRequest } from "@request/index"; | |||||
| import Layout from "@components/Layout/Layout"; | |||||
| import { useTheme } from "@styles"; | |||||
| import { useTranslation } from "react-i18next"; | import { useTranslation } from "react-i18next"; | ||||
| const HomeScreen = ({ navigation }) => { | const HomeScreen = ({ navigation }) => { |
| import MaterialIcons from "@expo/vector-icons/MaterialIcons"; | import MaterialIcons from "@expo/vector-icons/MaterialIcons"; | ||||
| import Ionicons from "@expo/vector-icons/Ionicons"; | import Ionicons from "@expo/vector-icons/Ionicons"; | ||||
| import LoginSVG from "@Assets/images/login.svg"; | |||||
| import GoogleSVG from "@Assets/images/google.svg"; | |||||
| import FacebookSVG from "@Assets/images/facebook.svg"; | |||||
| import TwitterSVG from "@Assets/images/twitter.svg"; | |||||
| import LoginSVG from "@assets/images/login.svg"; | |||||
| import GoogleSVG from "@assets/images/google.svg"; | |||||
| import FacebookSVG from "@assets/images/facebook.svg"; | |||||
| import TwitterSVG from "@assets/images/twitter.svg"; | |||||
| import CustomButton from "@Components/Buttons/CustomButton"; | |||||
| import InputField from "@Components/InputField"; | |||||
| import { globalStyles } from "@Styles/global"; | |||||
| import Loader from "@Components/Loader"; | |||||
| import CustomButton from "@components/Buttons/CustomButton"; | |||||
| import InputField from "@components/InputField"; | |||||
| import { globalStyles } from "@styles/global"; | |||||
| import Loader from "@components/Loader"; | |||||
| import { Formik } from "formik"; | import { Formik } from "formik"; | ||||
| import { loginSchema } from "@Schemas/loginSchema"; | |||||
| import { loginSchema } from "@schemas/loginSchema"; | |||||
| import { useDispatch, useSelector } from "react-redux"; | import { useDispatch, useSelector } from "react-redux"; | ||||
| import { selectLoginError } from "@Store/selectors/loginSelectors"; | |||||
| import { clearLoginErrors, fetchUser } from "@Store/actions/login/loginActions"; | |||||
| import { selectIsLoadingByActionType } from "@Store/selectors/loadingSelectors"; | |||||
| import { LOGIN_USER_SCOPE } from "@Store/actions/login/loginActionConstants"; | |||||
| import { fetchAuthProvider } from "@Store/actions/authProvider/authProviderActions"; | |||||
| import { selectLoginError } from "@store/selectors/loginSelectors"; | |||||
| import { clearLoginErrors, fetchUser } from "@store/actions/login/loginActions"; | |||||
| import { selectIsLoadingByActionType } from "@store/selectors/loadingSelectors"; | |||||
| import { LOGIN_USER_SCOPE } from "@store/actions/login/loginActionConstants"; | |||||
| import { fetchAuthProvider } from "@store/actions/authProvider/authProviderActions"; | |||||
| import useAuthHook from "../hooks/useAuthHook"; | import useAuthHook from "../hooks/useAuthHook"; | ||||
| import { storeData } from "@Service/asyncStorage"; | |||||
| import { ACCESS_TOKEN } from "@Constants/localStorage"; | |||||
| import Layout from "@Components/Layout/Layout"; | |||||
| import { useTheme } from "@Styles"; | |||||
| import { storeData } from "@service/asyncStorage"; | |||||
| import { ACCESS_TOKEN } from "@constants/localStorage"; | |||||
| import Layout from "@components/Layout/Layout"; | |||||
| import { useTheme } from "@styles"; | |||||
| import { useTranslation } from "react-i18next"; | import { useTranslation } from "react-i18next"; | ||||
| const LoginScreen = ({ navigation }) => { | const LoginScreen = ({ navigation }) => { |
| import React from "react"; | import React from "react"; | ||||
| import { View, Text, TouchableOpacity, StyleSheet, Image } from "react-native"; | import { View, Text, TouchableOpacity, StyleSheet, Image } from "react-native"; | ||||
| import MaterialIcons from "@expo/vector-icons/MaterialIcons"; | import MaterialIcons from "@expo/vector-icons/MaterialIcons"; | ||||
| import Layout from "@Components/Layout/Layout"; | |||||
| import Layout from "@components/Layout/Layout"; | |||||
| import { useTranslation } from "react-i18next"; | import { useTranslation } from "react-i18next"; | ||||
| import { useTheme } from "@Styles"; | |||||
| import { useTheme } from "@styles"; | |||||
| const OnboardingScreen = ({ navigation }) => { | const OnboardingScreen = ({ navigation }) => { | ||||
| const { t } = useTranslation(); | const { t } = useTranslation(); |
| import React, { useEffect, useState } from "react"; | import React, { useEffect, useState } from "react"; | ||||
| import { Text, Image, StyleSheet } from "react-native"; | import { Text, Image, StyleSheet } from "react-native"; | ||||
| import { getRequest } from "../request"; | |||||
| import { globalStyles } from "@Styles/global"; | |||||
| import { windowWidth } from "@Utils/Dimensions"; | |||||
| import Layout from "@Components/Layout/Layout"; | |||||
| import { useTheme } from "@Styles"; | |||||
| import { getRequest } from "@request/index"; | |||||
| import { globalStyles } from "@styles/global"; | |||||
| import { windowWidth } from "@utils/Dimensions"; | |||||
| import Layout from "@components/Layout/Layout"; | |||||
| import { useTheme } from "@styles"; | |||||
| const PostDetailsScreen = ({ navigation, route }) => { | const PostDetailsScreen = ({ navigation, route }) => { | ||||
| const [post, setPost] = useState({}); | const [post, setPost] = useState({}); |
| import React from "react"; | import React from "react"; | ||||
| import { View, Text, StyleSheet } from "react-native"; | import { View, Text, StyleSheet } from "react-native"; | ||||
| import Layout from "@Components/Layout/Layout"; | |||||
| import { useTheme } from "@Styles"; | |||||
| import Layout from "@components/Layout/Layout"; | |||||
| import { useTheme } from "@styles"; | |||||
| const ProfileScreen = () => { | const ProfileScreen = () => { | ||||
| const { colors } = useTheme(); | const { colors } = useTheme(); |
| Alert, | Alert, | ||||
| } from "react-native"; | } from "react-native"; | ||||
| import InputField from "@Components/InputField"; | |||||
| import InputField from "@components/InputField"; | |||||
| import MaterialIcons from "@expo/vector-icons/MaterialIcons"; | import MaterialIcons from "@expo/vector-icons/MaterialIcons"; | ||||
| import Ionicons from "@expo/vector-icons/Ionicons"; | import Ionicons from "@expo/vector-icons/Ionicons"; | ||||
| import RegistrationSVG from "@Assets/images/registration.svg"; | |||||
| import GoogleSVG from "@Assets/images/google.svg"; | |||||
| import FacebookSVG from "@Assets/images/facebook.svg"; | |||||
| import TwitterSVG from "@Assets/images/twitter.svg"; | |||||
| import RegistrationSVG from "@assets/images/registration.svg"; | |||||
| import GoogleSVG from "@assets/images/google.svg"; | |||||
| import FacebookSVG from "@assets/images/facebook.svg"; | |||||
| import TwitterSVG from "@assets/images/twitter.svg"; | |||||
| import CustomButton from "@Components/Buttons/CustomButton"; | |||||
| import { globalStyles } from "@Styles/global"; | |||||
| import Loader from "@Components/Loader"; | |||||
| import CustomButton from "@components/Buttons/CustomButton"; | |||||
| import { globalStyles } from "@styles/global"; | |||||
| import Loader from "@components/Loader"; | |||||
| import { Formik } from "formik"; | import { Formik } from "formik"; | ||||
| import { registerSchema } from "@Schemas/registerSchema"; | |||||
| import { registerSchema } from "@schemas/registerSchema"; | |||||
| import { useDispatch, useSelector } from "react-redux"; | import { useDispatch, useSelector } from "react-redux"; | ||||
| import { selectRegisterError } from "@Store/selectors/registerSelectors"; | |||||
| import { selectIsLoadingByActionType } from "@Store/selectors/loadingSelectors"; | |||||
| import { REGISTER_USER_SCOPE } from "@Store/actions/register/registerActionConstants"; | |||||
| import { selectRegisterError } from "@store/selectors/registerSelectors"; | |||||
| import { selectIsLoadingByActionType } from "@store/selectors/loadingSelectors"; | |||||
| import { REGISTER_USER_SCOPE } from "@store/actions/register/registerActionConstants"; | |||||
| import { | import { | ||||
| clearRegisterErrors, | clearRegisterErrors, | ||||
| registerUser, | registerUser, | ||||
| } from "@Store/actions/register/registerActions"; | |||||
| } from "@store/actions/register/registerActions"; | |||||
| import useAuthHook from "../hooks/useAuthHook"; | import useAuthHook from "../hooks/useAuthHook"; | ||||
| import { fetchAuthProvider } from "@Store/actions/authProvider/authProviderActions"; | |||||
| import { ACCESS_TOKEN } from "@Constants/localStorage"; | |||||
| import { storeData } from "@Service/asyncStorage"; | |||||
| import Layout from "@Components/Layout/Layout"; | |||||
| import { useTheme } from "@Styles"; | |||||
| import { fetchAuthProvider } from "@store/actions/authProvider/authProviderActions"; | |||||
| import { ACCESS_TOKEN } from "@constants/localStorage"; | |||||
| import { storeData } from "@service/asyncStorage"; | |||||
| import Layout from "@components/Layout/Layout"; | |||||
| import { useTheme } from "@styles"; | |||||
| import { useTranslation } from "react-i18next"; | import { useTranslation } from "react-i18next"; | ||||
| const RegisterScreen = ({ navigation }) => { | const RegisterScreen = ({ navigation }) => { |
| import React, { useEffect, useState } from "react"; | import React, { useEffect, useState } from "react"; | ||||
| import { View, Text, TouchableOpacity } from "react-native"; | import { View, Text, TouchableOpacity } from "react-native"; | ||||
| import { useTheme } from "@Styles"; | |||||
| import { THEME, LANGUAGE } from "@Constants/localStorage"; | |||||
| import { storeObject, getObjectData } from "@Service/asyncStorage"; | |||||
| import Layout from "@Components/Layout/Layout"; | |||||
| import { useTheme } from "@styles"; | |||||
| import { THEME, LANGUAGE } from "@constants/localStorage"; | |||||
| import { storeObject, getObjectData } from "@service/asyncStorage"; | |||||
| import Layout from "@components/Layout/Layout"; | |||||
| import { useTranslation } from "react-i18next"; | import { useTranslation } from "react-i18next"; | ||||
| const SettingsScreen = ({ navigation }) => { | const SettingsScreen = ({ navigation }) => { |
| import React, { useState, useEffect, createContext, useContext } from "react"; | import React, { useState, useEffect, createContext, useContext } from "react"; | ||||
| import { useColorScheme } from "react-native"; | import { useColorScheme } from "react-native"; | ||||
| import { THEME } from "@Constants/localStorage"; | |||||
| import { getObjectData } from "@Service/asyncStorage"; | |||||
| import { THEME } from "@constants/localStorage"; | |||||
| import { getObjectData } from "@service/asyncStorage"; | |||||
| import { lightColors, darkColors } from "./colors"; | import { lightColors, darkColors } from "./colors"; | ||||
| export const ThemeContext = createContext({ | export const ThemeContext = createContext({ |