gitscope
https://dev.kronoz.win/r/marzneshin.git
dashboard/src/features/auth/auth.store.ts · v0.3.0-alpha11
Source
1 13e20b0 Mrdn 2y ago import { fetch } from '@marzneshin/utils';
2 4466347 Mrdn 2y ago import { create } from 'zustand';
3 4466347 Mrdn 2y ago import { subscribeWithSelector } from 'zustand/middleware';
4 4466347 Mrdn 2y ago
5 4466347 Mrdn 2y ago type AdminStateType = {
6 13e20b0 Mrdn 2y ago isLoggedIn: () => Promise<boolean>,
7 4466347 Mrdn 2y ago getAuthToken: () => string | null;
8 4466347 Mrdn 2y ago setAuthToken: (token: string) => void;
9 4466347 Mrdn 2y ago removeAuthToken: () => void;
10 4466347 Mrdn 2y ago }
11 4466347 Mrdn 2y ago
12 4466347 Mrdn 2y ago export const useAuth = create(
13 13e20b0 Mrdn 2y ago subscribeWithSelector<AdminStateType>(() => ({
14 13e20b0 Mrdn 2y ago isLoggedIn: async () => {
15 13e20b0 Mrdn 2y ago try {
16 13e20b0 Mrdn 2y ago await fetch('/admins');
17 13e20b0 Mrdn 2y ago return true;
18 13e20b0 Mrdn 2y ago } catch (error) {
19 13e20b0 Mrdn 2y ago return false;
20 13e20b0 Mrdn 2y ago }
21 13e20b0 Mrdn 2y ago },
22 4466347 Mrdn 2y ago getAuthToken: () => {
23 4466347 Mrdn 2y ago return localStorage.getItem('token');
24 4466347 Mrdn 2y ago },
25 4466347 Mrdn 2y ago setAuthToken: (token: string) => {
26 4466347 Mrdn 2y ago localStorage.setItem('token', token);
27 4466347 Mrdn 2y ago },
28 4466347 Mrdn 2y ago removeAuthToken: () => {
29 4466347 Mrdn 2y ago localStorage.removeItem('token');
30 4466347 Mrdn 2y ago },
31 4466347 Mrdn 2y ago }))
32 4466347 Mrdn 2y ago )