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
JavaScript
;
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,
};
}