import { useUserAuthenticationContext } from "@/contexts/UserAuthenticationContext"; import type { MainStackScreenComponentProps } from "@/navigations/Types"; import authenticateUser from "@/utils/requests/authenticateUser"; import getUserInformations from "@/utils/requests/userInformations"; import Button from "@components/Button"; import ContainerBorderTopCurved from "@components/ContainerBorderTopCurved"; import Input from "@components/Input"; import BackgroundDefault from "@components/backgrounds/BackgroundDefault"; import Box from "@components/bases/Box"; import Text from "@components/bases/Text"; import { Fontisto } from "@expo/vector-icons"; import { containers } from "@styles/Commons"; import { useMutation } from "@tanstack/react-query"; import type { AxiosError } from "axios"; import { useCallback, useState } from "react"; import { KeyboardAvoidingView, Platform, TouchableOpacity, View } from "react-native"; import { useSafeAreaInsets } from "react-native-safe-area-context"; import { LOG } from "@logger"; const log = LOG.extend("UserLoginScreen"); const UserLoginScreen: MainStackScreenComponentProps<"userLoginScreen"> = ({ navigation }) => { log.debug("UserLoginScreen"); const insets = useSafeAreaInsets(); const { setAuthenticationData, setUserInformations } = useUserAuthenticationContext(); // TODO : Remove default value for email and password const [email, setEmail] = useState("admin"); const [password, setPassword] = useState("admin"); const [error, setError] = useState(""); const authenticationMutation = useMutation({ mutationFn: authenticateUser, onSuccess: (data) => { setAuthenticationData(data); // navigation.popToTop(); // navigation.replace("bottomTabs"); // navigation.navigate("bottomTabs"); log.info("Receive data from authenticateUser, running getUserInformations..."); userInformationsMutation.mutate(data.access); // console.log("user informations", userInformations); }, // biome-ignore lint/suspicious/noExplicitAny: onError: (error: AxiosError) => { log.error("authenticationMutation", error); if (error.response) { log.error("error :: ", error.response.data); if (error.response.status === 400) { return setError("Bad request"); } const message: string = error.response.data.detail; return setError(message); } setError("Unknown error"); }, }); const userInformationsMutation = useMutation({ mutationFn: (userAccessToken: string) => getUserInformations(userAccessToken), onSuccess: (userInformations) => { log.info("getUserInformations request was a success, navigating to homepage"); setUserInformations(userInformations); navigation.navigate("appBottomTabsNavigator"); }, onError: (error) => { log.error("userInformationsMutation", error); }, }); const submit = useCallback(() => { authenticationMutation.mutate({ username: email, password: password, }); }, [email, password, authenticationMutation]); return ( navigation.goBack()}> Mot de passe oublie ? Connexion Bienvenue, vous nous avez manqué ! {error && ( {error} )}