auth.hooks.ts (1292B)
1 import { useMutation, useQuery } from "@tanstack/react-query"; 2 import { RegisterRequest } from "../types/RegisterRequest"; 3 import axios from "axios"; 4 import { LoginRequest } from "../types/LoginRequest"; 5 import { queryClient } from "../../main"; 6 7 const BASE_URI: string = "/api/authentication"; 8 9 export const getAuthentication = () => { 10 return useQuery({ 11 queryKey: ["authentication"], 12 queryFn: () => axios.get<string>(BASE_URI).then(response => response.data) 13 }); 14 }; 15 16 export const useRegister = () => { 17 return useMutation<void, string, RegisterRequest>({ 18 mutationFn: (request: RegisterRequest) => axios.post(`${BASE_URI}/register`, request), 19 onSuccess: () => queryClient.invalidateQueries({ queryKey: ['authentication'] }) 20 }); 21 }; 22 23 export const useLogin = () => { 24 return useMutation<void, string, LoginRequest>({ 25 mutationFn: (request: LoginRequest) => axios.post(`${BASE_URI}/login`, request), 26 onSuccess: () => queryClient.invalidateQueries({ queryKey: ['authentication'] }) 27 }); 28 }; 29 30 export const useLogout = () => { 31 return useMutation<void, string, void>({ 32 mutationFn: () => axios.post(`${BASE_URI}/logout`), 33 onSuccess: () => queryClient.invalidateQueries({ queryKey: ['authentication'] }) 34 }); 35 };