import React, { useContext, useState } from 'react' import axios from 'axios' import { User } from '../models/user.model' import { UserContext } from './userContext' const _apiUrl: string = 'https://localhost:1443/' export interface Auth { loginUser: () => Promise<void> error: null isUserLogged: () => Promise<boolean> getUser: () => User | undefined logoutUser: () => void } export const useAuth = (): Auth => { const [error, setError] = useState(null) const { setisLogged } = useContext(UserContext) //login user const loginUser = async (): Promise<void> => { try { await axios.get(`${_apiUrl}OAuth2Login`) const { data } = await axios.get(`${_apiUrl}api/common/WhoAmI`) if (data) { console.log('whomi', data) localStorage.setItem('user', JSON.stringify(data)) } } catch (e) { setError(e) } } const logoutUser = (): void => { localStorage.removeItem('user') } const isUserLogged = async (): Promise<boolean> => { const user = localStorage.getItem('user') if (user) { try { const { data } = await axios.get(`${_apiUrl}api/common/WhoAmI`) if (data) { console.log(data) return true } return false } catch (e) { setError(e) return false } } else { return false } } const getUser = (): User | undefined => { const user = localStorage.getItem('user') if (user) return JSON.parse(user) as User } return { loginUser, error, isUserLogged, getUser, logoutUser } }