UNPKG

@oxyhq/services

Version:

OxyHQ Expo/React Native SDK — UI components, screens, and native features

68 lines (66 loc) 1.79 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useAuthStore = void 0; var _zustand = require("zustand"); var _core = require("@oxyhq/core"); const debug = (0, _core.createDebugLogger)('AuthStore'); const useAuthStore = exports.useAuthStore = (0, _zustand.create)((set, get) => ({ user: null, isAuthenticated: false, isLoading: false, error: null, lastUserFetch: null, loginSuccess: user => set({ isLoading: false, isAuthenticated: true, user, lastUserFetch: Date.now() }), loginFailure: error => set({ isLoading: false, error }), logout: () => set({ user: null, isAuthenticated: false, lastUserFetch: null }), setUser: user => set({ user, lastUserFetch: Date.now() }), fetchUser: async (oxyServices, forceRefresh = false) => { const state = get(); const now = Date.now(); const cacheAge = state.lastUserFetch ? now - state.lastUserFetch : Number.POSITIVE_INFINITY; const cacheValid = cacheAge < 5 * 60 * 1000; // 5 minutes cache // Use cached data if available and not forcing refresh if (!forceRefresh && state.user && cacheValid) { debug.log('Using cached user data (age:', cacheAge, 'ms)'); return; } set({ isLoading: true, error: null }); try { const user = await oxyServices.getCurrentUser(); set({ user, isLoading: false, isAuthenticated: true, lastUserFetch: now }); } catch (error) { const errorMessage = error instanceof Error ? error.message : 'Failed to fetch user'; debug.error('Error fetching user:', error); set({ error: errorMessage, isLoading: false }); } } })); //# sourceMappingURL=authStore.js.map