DarainHyder
Initial clean deploy commit: removing binary files and venv
25732fb
import React, { createContext, useState, useEffect } from 'react'
import { authAPI } from '../services/api'
import toast from 'react-hot-toast'
export const AuthContext = createContext(null)
export const AuthProvider = ({ children }) => {
const [user, setUser] = useState(null)
const [loading, setLoading] = useState(true)
useEffect(() => {
checkAuth()
}, [])
const checkAuth = async () => {
try {
const response = await authAPI.getCurrentUser()
setUser(response.data)
} catch (error) {
setUser(null)
} finally {
setLoading(false)
}
}
const login = async (credentials) => {
try {
const response = await authAPI.login(credentials)
setUser(response.data)
toast.success('Welcome back!')
return response.data
} catch (error) {
throw error
}
}
const register = async (userData) => {
try {
const response = await authAPI.register(userData)
setUser(response.data)
toast.success('Account created successfully!')
return response.data
} catch (error) {
throw error
}
}
const logout = async () => {
try {
await authAPI.logout()
setUser(null)
toast.success('Logged out successfully')
} catch (error) {
console.error('Logout error:', error)
}
}
return (
<AuthContext.Provider value={{ user, login, register, logout, loading }}>
{children}
</AuthContext.Provider>
)
}