some change
This commit is contained in:
parent
d4a1492d56
commit
313f1def49
38 changed files with 475 additions and 401 deletions
46
src/app/user/userStore.ts
Normal file
46
src/app/user/userStore.ts
Normal file
|
@ -0,0 +1,46 @@
|
|||
import { createStore, Store, useStore } from '../../utils/store.ts'
|
||||
import { addMessageListener } from '../messageBus/messageBus.ts'
|
||||
|
||||
export interface User {
|
||||
userId: string
|
||||
username: string
|
||||
}
|
||||
|
||||
export type UserStore = Store<User | null>
|
||||
|
||||
const UserKey = 'user'
|
||||
|
||||
export const userStore = createStore<User | null>(loadStoredUser())
|
||||
|
||||
userStore.subscribe((user) => {
|
||||
localStorage.setItem(UserKey, JSON.stringify(user))
|
||||
})
|
||||
|
||||
addMessageListener('auth:logged-in', (e) => {
|
||||
userStore.setState({
|
||||
userId: e.userId,
|
||||
username: e.username,
|
||||
})
|
||||
})
|
||||
|
||||
addMessageListener('auth:registered', (e) => {
|
||||
userStore.setState({
|
||||
userId: e.userId,
|
||||
username: e.username,
|
||||
})
|
||||
})
|
||||
|
||||
addMessageListener('auth:logged-out', () => {
|
||||
userStore.setState(null)
|
||||
})
|
||||
|
||||
export const useUser = () => useStore(userStore)
|
||||
|
||||
function loadStoredUser(): User | null {
|
||||
const json = localStorage.getItem(UserKey)
|
||||
if (json) {
|
||||
return JSON.parse(json) as User
|
||||
} else {
|
||||
return null
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue