/
GEOSHEV
/
Event-app
Обзор
Документация
Войти
/
GEOSHEV
/
Event-app
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
develop
src/store/useAuthStore.ts
61 строка
1 KB
Gosha
add zustand store
12 июн 2026, 19:56
12 июн 2026, 19:56
4d5982d
Код
Авторство
О чём код?
import { getMe, logout as logoutApi, updateMe } from "@/src/api/user"; import { UpdateUserDto, User } from "@/src/types/auth"; import AsyncStorage from "@react-native-async-storage/async-storage"; import { create } from "zustand"; type AuthStore = { user: User | null; isLoading: boolean; fetchUser: () => Promise<void>; updateUser: (dto: UpdateUserDto) => Promise<void>; setUser: (user: User | null) => void; logout: () => Promise<void>; }; export const useAuthStore = create<AuthStore>((set) => ({ user: null, isLoading: false, fetchUser: async () => { set({ isLoading: true }); try { const user = await getMe(); set({ user }); } catch (error) { console.log("fetchUser error:", error); } finally { set({ isLoading: false }); } }, updateUser: async (dto) => { await updateMe(dto); set((state) => state.user ? { user: { ...state.user, firstName: dto.firstName, secondName: dto.secondName, }, } : state, ); }, setUser: (user) => set({ user }), logout: async () => { try { await logoutApi(); } catch {} await AsyncStorage.removeItem("accessToken"); await AsyncStorage.removeItem("refreshToken"); set({ user: null }); }, }));