UNPKG

storenest-commerce

Version:

Complete e-commerce SDK for Storenest platform with React components, multi-language support, secure checkout, and enterprise-grade security

88 lines (87 loc) 2.85 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useAuth = useAuth; const react_1 = require("react"); const auth_1 = require("../auth"); function useAuth(storageKey = 'storenest_user') { const [user, setUser] = (0, react_1.useState)(null); const [userShopId, setUserShopId] = (0, react_1.useState)(null); const [isLoading, setIsLoading] = (0, react_1.useState)(false); const [error, setError] = (0, react_1.useState)(null); // Initialize from localStorage (0, react_1.useEffect)(() => { try { const stored = localStorage.getItem(storageKey); if (stored) { const userData = JSON.parse(stored); setUser(userData); setUserShopId(userData.id); } } catch (err) { console.warn('Failed to load user from localStorage:', err); } }, [storageKey]); const login = (0, react_1.useCallback)(async (params) => { setIsLoading(true); setError(null); try { const result = await (0, auth_1.login)(params); if (result?.user?.id) { setUser(result.user); setUserShopId(result.user.id); localStorage.setItem(storageKey, JSON.stringify(result.user)); } else { throw new Error('Invalid response from server'); } } catch (err) { const errorMessage = err instanceof Error ? err.message : 'Login failed'; setError(errorMessage); throw err; } finally { setIsLoading(false); } }, [storageKey]); const register = (0, react_1.useCallback)(async (params) => { setIsLoading(true); setError(null); try { const result = await (0, auth_1.register)(params); if (result?.user?.id) { setUser(result.user); setUserShopId(result.user.id); localStorage.setItem(storageKey, JSON.stringify(result.user)); } else { throw new Error('Invalid response from server'); } } catch (err) { const errorMessage = err instanceof Error ? err.message : 'Registration failed'; setError(errorMessage); throw err; } finally { setIsLoading(false); } }, [storageKey]); const logout = (0, react_1.useCallback)(() => { setUser(null); setUserShopId(null); setError(null); localStorage.removeItem(storageKey); }, [storageKey]); return { user, userShopId, isLoading, error, login, register, logout, isAuthenticated: !!user, }; }