1 line
13 KiB
JSON
1 line
13 KiB
JSON
{"ast":null,"code":"var _jsxFileName = \"/home/gnx/Desktop/gnx-mail/frontend/src/hooks/useAuth.js\",\n _s = $RefreshSig$(),\n _s2 = $RefreshSig$();\nimport { useState, useEffect, createContext, useContext } from 'react';\nimport { useQuery, useMutation, useQueryClient } from 'react-query';\nimport { api } from '../services/api';\nimport toast from 'react-hot-toast';\nimport { jsxDEV as _jsxDEV } from \"react/jsx-dev-runtime\";\nconst AuthContext = /*#__PURE__*/createContext();\nexport const useAuth = () => {\n _s();\n const context = useContext(AuthContext);\n if (!context) {\n throw new Error('useAuth must be used within an AuthProvider');\n }\n return context;\n};\n_s(useAuth, \"b9L3QQ+jgeyIrH0NfHrJ8nn7VMU=\");\nexport const AuthProvider = ({\n children\n}) => {\n _s2();\n const [user, setUser] = useState(null);\n const [loading, setLoading] = useState(true);\n const queryClient = useQueryClient();\n\n // Check if user is authenticated\n const {\n data: userData,\n isLoading\n } = useQuery('user', () => api.get('/accounts/profile/').then(res => res.data), {\n retry: false,\n onError: () => {\n setUser(null);\n localStorage.removeItem('access_token');\n localStorage.removeItem('refresh_token');\n }\n });\n useEffect(() => {\n if (!isLoading) {\n if (userData) {\n setUser(userData);\n } else {\n setUser(null);\n }\n setLoading(false);\n }\n }, [userData, isLoading]);\n\n // Login mutation\n const loginMutation = useMutation(credentials => api.post('/accounts/login/', credentials), {\n onSuccess: response => {\n const {\n user,\n tokens\n } = response.data;\n localStorage.setItem('access_token', tokens.access);\n localStorage.setItem('refresh_token', tokens.refresh);\n setUser(user);\n queryClient.setQueryData('user', user);\n toast.success('Login successful!');\n },\n onError: error => {\n var _error$response, _error$response$data;\n toast.error(((_error$response = error.response) === null || _error$response === void 0 ? void 0 : (_error$response$data = _error$response.data) === null || _error$response$data === void 0 ? void 0 : _error$response$data.message) || 'Login failed');\n }\n });\n\n // Register mutation\n const registerMutation = useMutation(userData => api.post('/accounts/register/', userData), {\n onSuccess: response => {\n const {\n user,\n tokens\n } = response.data;\n localStorage.setItem('access_token', tokens.access);\n localStorage.setItem('refresh_token', tokens.refresh);\n setUser(user);\n queryClient.setQueryData('user', user);\n toast.success('Registration successful!');\n },\n onError: error => {\n var _error$response2, _error$response2$data;\n toast.error(((_error$response2 = error.response) === null || _error$response2 === void 0 ? void 0 : (_error$response2$data = _error$response2.data) === null || _error$response2$data === void 0 ? void 0 : _error$response2$data.message) || 'Registration failed');\n }\n });\n\n // Logout mutation\n const logoutMutation = useMutation(() => api.post('/accounts/logout/', {\n refresh: localStorage.getItem('refresh_token')\n }), {\n onSuccess: () => {\n setUser(null);\n localStorage.removeItem('access_token');\n localStorage.removeItem('refresh_token');\n queryClient.clear();\n toast.success('Logged out successfully');\n },\n onError: () => {\n // Even if logout fails on server, clear local state\n setUser(null);\n localStorage.removeItem('access_token');\n localStorage.removeItem('refresh_token');\n queryClient.clear();\n }\n });\n const login = credentials => {\n return loginMutation.mutateAsync(credentials);\n };\n const register = userData => {\n return registerMutation.mutateAsync(userData);\n };\n const logout = () => {\n return logoutMutation.mutateAsync();\n };\n const value = {\n user,\n loading,\n login,\n register,\n logout,\n isLoggingIn: loginMutation.isLoading,\n isRegistering: registerMutation.isLoading,\n isLoggingOut: logoutMutation.isLoading\n };\n return /*#__PURE__*/_jsxDEV(AuthContext.Provider, {\n value: value,\n children: children\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 127,\n columnNumber: 5\n }, this);\n};\n_s2(AuthProvider, \"rMHWfpn0nVAy4Rg88pfZ2PSEuSY=\", false, function () {\n return [useQueryClient, useQuery, useMutation, useMutation, useMutation];\n});\n_c = AuthProvider;\nvar _c;\n$RefreshReg$(_c, \"AuthProvider\");","map":{"version":3,"names":["useState","useEffect","createContext","useContext","useQuery","useMutation","useQueryClient","api","toast","jsxDEV","_jsxDEV","AuthContext","useAuth","_s","context","Error","AuthProvider","children","_s2","user","setUser","loading","setLoading","queryClient","data","userData","isLoading","get","then","res","retry","onError","localStorage","removeItem","loginMutation","credentials","post","onSuccess","response","tokens","setItem","access","refresh","setQueryData","success","error","_error$response","_error$response$data","message","registerMutation","_error$response2","_error$response2$data","logoutMutation","getItem","clear","login","mutateAsync","register","logout","value","isLoggingIn","isRegistering","isLoggingOut","Provider","fileName","_jsxFileName","lineNumber","columnNumber","_c","$RefreshReg$"],"sources":["/home/gnx/Desktop/gnx-mail/frontend/src/hooks/useAuth.js"],"sourcesContent":["import { useState, useEffect, createContext, useContext } from 'react';\nimport { useQuery, useMutation, useQueryClient } from 'react-query';\nimport { api } from '../services/api';\nimport toast from 'react-hot-toast';\n\nconst AuthContext = createContext();\n\nexport const useAuth = () => {\n const context = useContext(AuthContext);\n if (!context) {\n throw new Error('useAuth must be used within an AuthProvider');\n }\n return context;\n};\n\nexport const AuthProvider = ({ children }) => {\n const [user, setUser] = useState(null);\n const [loading, setLoading] = useState(true);\n const queryClient = useQueryClient();\n\n // Check if user is authenticated\n const { data: userData, isLoading } = useQuery(\n 'user',\n () => api.get('/accounts/profile/').then(res => res.data),\n {\n retry: false,\n onError: () => {\n setUser(null);\n localStorage.removeItem('access_token');\n localStorage.removeItem('refresh_token');\n },\n }\n );\n\n useEffect(() => {\n if (!isLoading) {\n if (userData) {\n setUser(userData);\n } else {\n setUser(null);\n }\n setLoading(false);\n }\n }, [userData, isLoading]);\n\n // Login mutation\n const loginMutation = useMutation(\n (credentials) => api.post('/accounts/login/', credentials),\n {\n onSuccess: (response) => {\n const { user, tokens } = response.data;\n localStorage.setItem('access_token', tokens.access);\n localStorage.setItem('refresh_token', tokens.refresh);\n setUser(user);\n queryClient.setQueryData('user', user);\n toast.success('Login successful!');\n },\n onError: (error) => {\n toast.error(error.response?.data?.message || 'Login failed');\n },\n }\n );\n\n // Register mutation\n const registerMutation = useMutation(\n (userData) => api.post('/accounts/register/', userData),\n {\n onSuccess: (response) => {\n const { user, tokens } = response.data;\n localStorage.setItem('access_token', tokens.access);\n localStorage.setItem('refresh_token', tokens.refresh);\n setUser(user);\n queryClient.setQueryData('user', user);\n toast.success('Registration successful!');\n },\n onError: (error) => {\n toast.error(error.response?.data?.message || 'Registration failed');\n },\n }\n );\n\n // Logout mutation\n const logoutMutation = useMutation(\n () => api.post('/accounts/logout/', { refresh: localStorage.getItem('refresh_token') }),\n {\n onSuccess: () => {\n setUser(null);\n localStorage.removeItem('access_token');\n localStorage.removeItem('refresh_token');\n queryClient.clear();\n toast.success('Logged out successfully');\n },\n onError: () => {\n // Even if logout fails on server, clear local state\n setUser(null);\n localStorage.removeItem('access_token');\n localStorage.removeItem('refresh_token');\n queryClient.clear();\n },\n }\n );\n\n const login = (credentials) => {\n return loginMutation.mutateAsync(credentials);\n };\n\n const register = (userData) => {\n return registerMutation.mutateAsync(userData);\n };\n\n const logout = () => {\n return logoutMutation.mutateAsync();\n };\n\n const value = {\n user,\n loading,\n login,\n register,\n logout,\n isLoggingIn: loginMutation.isLoading,\n isRegistering: registerMutation.isLoading,\n isLoggingOut: logoutMutation.isLoading,\n };\n\n return (\n <AuthContext.Provider value={value}>\n {children}\n </AuthContext.Provider>\n );\n};\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]} |