import { asp as g } from "@asp/asp"; import * as Button from "@components/ButtonNew"; import * as Input from "@components/InputNew"; import * as Modal from "@components/Modal"; import { MaterialIcons } from "@expo/vector-icons"; import Feather from "@expo/vector-icons/Feather"; import { useMutation } from "@tanstack/react-query"; import type { AxiosError } from "axios"; import { useRef, useState } from "react"; import { Text, View } from "react-native"; import { useDispatch } from "react-redux"; import { getUserData, login } from "../api"; import { setToken, setUserData } from "../slice"; export const LoginForm = () => { const dispatch = useDispatch(); const usernameRef = useRef(""); const passwordRef = useRef(""); const loginMutation = useMutation({ mutationFn: () => login({ username: usernameRef.current, password: passwordRef.current }), onSuccess: (data) => { dispatch(setToken(data.data)); useDataMutation.mutate(); }, onError: (error: AxiosError) => { setError(JSON.stringify(error.response?.data) || error.message); }, }); const useDataMutation = useMutation({ mutationFn: getUserData, onSuccess: (data) => { dispatch(setUserData(data.data)); }, }); const [error, setError] = useState(""); return ( Connexion Bienvenue, vous nous avez manqué ! Addresse e-mail (usernameRef.current = v)} /> Mot de passe (passwordRef.current = v)} /> loginMutation.mutate()} > Se connecter Créer un compte {/* MODAL */} {error} setError("")}> OK ); };