diff options
Diffstat (limited to 'fe/src/stores')
| -rw-r--r-- | fe/src/stores/auth.ts | 132 |
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'; | |||
| 5 | type Nullable<T> = T | null; | 5 | type Nullable<T> = T | null; |
| 6 | 6 | ||
| 7 | interface User { | 7 | interface User { |
| 8 | uuid: string; | 8 | uuid: string; |
| 9 | username: string; | 9 | username: string; |
| 10 | } | 10 | } |
| 11 | 11 | ||
| 12 | interface TokenStore { | 12 | interface 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 | ||
| 19 | interface UserStore { | 19 | interface 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 | ||
| 25 | interface PreferenceStore { | 25 | interface 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 | ||
| 30 | function createTokenStore(): TokenStore { | 30 | function 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 | ||
| 55 | function onTokenChange ($token: Nullable<string>): boolean { | 55 | function onTokenChange($token: Nullable<string>): boolean { |
| 56 | return $token ? true : false; | 56 | return $token ? true : false; |
| 57 | } | 57 | } |
| 58 | 58 | ||
| 59 | function createUserStore(): UserStore { | 59 | function 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 { | 82 | function 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 | ||
| 82 | function 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 | ||
| 100 | export const token = createTokenStore(); | 100 | export const token = createTokenStore(); |
