aboutsummaryrefslogtreecommitdiff
path: root/fe/src/stores/auth.ts
diff options
context:
space:
mode:
Diffstat (limited to 'fe/src/stores/auth.ts')
-rw-r--r--fe/src/stores/auth.ts132
1 files changed, 66 insertions, 66 deletions
diff --git a/fe/src/stores/auth.ts b/fe/src/stores/auth.ts
index 10e6bd3..0efc80b 100644
--- a/fe/src/stores/auth.ts
+++ b/fe/src/stores/auth.ts
@@ -5,96 +5,96 @@ import { writable, derived } from 'svelte/store';
5type Nullable<T> = T | null; 5type Nullable<T> = T | null;
6 6
7interface User { 7interface User {
8 uuid: string; 8 uuid: string;
9 username: string; 9 username: string;
10} 10}
11 11
12interface TokenStore { 12interface TokenStore {
13 subscribe: (run: Subscriber<Nullable<string>>, invalidate: Invalidator<Nullable<string>>) => Unsubscriber, 13 subscribe: (run: Subscriber<Nullable<string>>, invalidate?: Invalidator<Nullable<string>>) => Unsubscriber,
14 authenticate: (newToken: string) => void, 14 authenticate: (newToken: string) => void,
15 unauthenticate: () => void 15 unauthenticate: () => void
16} 16}
17 17
18 18
19interface UserStore { 19interface UserStore {
20 subscribe: (run: Subscriber<Nullable<User>>, invalidate: Invalidator<Nullable<User>>) => Unsubscriber, 20 subscribe: (run: Subscriber<Nullable<User>>, invalidate?: Invalidator<Nullable<User>>) => Unsubscriber,
21 setUser: (user: User) => void, 21 setUser: (user: User) => void,
22 reset: () => void 22 reset: () => void
23} 23}
24 24
25interface PreferenceStore { 25interface PreferenceStore {
26 subscribe: (run: Subscriber<Nullable<Preference>>, invalidate: Invalidator<Nullable<Preference>>) => Unsubscriber, 26 subscribe: (run: Subscriber<Preference>, invalidate?: Invalidator<Preference>) => Unsubscriber,
27 set: (this: void, value: Nullable<Preference>) => void 27 set: (this: void, value: Preference) => void
28} 28}
29 29
30function createTokenStore(): TokenStore { 30function createTokenStore(): TokenStore {
31 const storedToken = localStorage.getItem("token"); 31 const storedToken = localStorage.getItem("token");
32 const { subscribe, set } = writable<string | null>(storedToken); 32 const { subscribe, set } = writable<string | null>(storedToken);
33 33
34 function authenticate(newToken: string): void { 34 function authenticate(newToken: string): void {
35 try { 35 try {
36 localStorage.setItem("token", newToken); 36 localStorage.setItem("token", newToken);
37 set(newToken); 37 set(newToken);
38 } catch (e) { 38 } catch (e) {
39 console.error('error', e); 39 console.error('error', e);
40 }
41 } 40 }
42 41 }
43 function unauthenticate(): void { 42
44 localStorage.removeItem("token"); 43 function unauthenticate(): void {
45 set(null); 44 localStorage.removeItem("token");
46 } 45 set(null);
47 46 }
48 return { 47
49 subscribe, 48 return {
50 authenticate, 49 subscribe,
51 unauthenticate 50 authenticate,
52 }; 51 unauthenticate
52 };
53} 53}
54 54
55function onTokenChange ($token: Nullable<string>): boolean { 55function onTokenChange($token: Nullable<string>): boolean {
56 return $token ? true : false; 56 return $token ? true : false;
57} 57}
58 58
59function createUserStore(): UserStore { 59function createUserStore(): UserStore {
60 const user = localStorage.getItem('user'); 60 const user = localStorage.getItem('user');
61 const userObj: Nullable<User> = user ? JSON.parse(user) : null; 61 const userObj: Nullable<User> = user ? JSON.parse(user) : null;
62 const { subscribe, set } = writable<User | null>(userObj); 62 const { subscribe, set } = writable<User | null>(userObj);
63 63
64 const setUser = (user: User) => { 64 const setUser = (user: User) => {
65 localStorage.setItem('user', JSON.stringify(user)); 65 localStorage.setItem('user', JSON.stringify(user));
66 set(user); 66 set(user);
67 } 67 }
68
69 const reset = () => {
70 localStorage.removeItem('user');
71 set(null);
72 }
73
74 return {
75 subscribe,
76 setUser,
77 reset
78 }
79}
68 80
69 const reset = () => {
70 localStorage.removeItem('user');
71 set(null);
72 }
73 81
74 return { 82function createPreferenceStore(): PreferenceStore {
75 subscribe, 83 const preferences = localStorage.getItem('preferences');
76 setUser, 84 const preferenceObj: Preference = preferences ? JSON.parse(preferences) : {
77 reset 85 color: "#FF0000",
86 size: {
87 size: 16,
88 unit: 'oz'
78 } 89 }
79} 90 };
80 91
92 const { subscribe, set } = writable<Preference>(preferenceObj);
81 93
82function createPreferenceStore(): PreferenceStore { 94 return {
83 const preferences = localStorage.getItem('preferences'); 95 subscribe,
84 const preferenceObj: Preference = preferences ? JSON.parse(preferences) : { 96 set
85 color: "#FF0000", 97 }
86 size: {
87 size: 16,
88 unit: 'oz'
89 }
90 };
91
92 const { subscribe, set } = writable<Nullable<Preference>>(preferenceObj);
93
94 return {
95 subscribe,
96 set
97 }
98} 98}
99 99
100export const token = createTokenStore(); 100export const token = createTokenStore();