47 lines
957 B
JavaScript
47 lines
957 B
JavaScript
import { useState, useEffect } from 'react'
|
|
import { OAuthService } from '../services/oauth.js'
|
|
|
|
const oauthService = new OAuthService()
|
|
|
|
export function useAuth() {
|
|
const [user, setUser] = useState(null)
|
|
const [agent, setAgent] = useState(null)
|
|
const [loading, setLoading] = useState(true)
|
|
|
|
useEffect(() => {
|
|
initAuth()
|
|
}, [])
|
|
|
|
const initAuth = async () => {
|
|
try {
|
|
const authResult = await oauthService.checkAuth()
|
|
if (authResult) {
|
|
setUser(authResult.user)
|
|
setAgent(authResult.agent)
|
|
}
|
|
} catch (error) {
|
|
console.error('Auth initialization failed:', error)
|
|
} finally {
|
|
setLoading(false)
|
|
}
|
|
}
|
|
|
|
const login = async (handle) => {
|
|
await oauthService.login(handle)
|
|
}
|
|
|
|
const logout = async () => {
|
|
await oauthService.logout()
|
|
setUser(null)
|
|
setAgent(null)
|
|
}
|
|
|
|
return {
|
|
user,
|
|
agent,
|
|
loading,
|
|
login,
|
|
logout,
|
|
isAuthenticated: !!user
|
|
}
|
|
} |