2023-03-23 10:34:06 +01:00
|
|
|
import createPersistedState from 'use-persisted-state'
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Set up local storage state for account & token
|
|
|
|
*/
|
2023-03-24 16:33:14 +01:00
|
|
|
const usePersistedAccount = createPersistedState('fs-account')
|
|
|
|
const usePersistedToken = createPersistedState('fs-token')
|
2023-04-28 21:23:06 +02:00
|
|
|
const usePersistedSeenUser = createPersistedState('fs-seen-user')
|
2023-03-23 10:34:06 +01:00
|
|
|
|
|
|
|
/*
|
2023-05-29 22:34:33 -05:00
|
|
|
* Make it possible to always check for account.username and account.control
|
2023-03-23 10:34:06 +01:00
|
|
|
*/
|
2023-05-29 22:34:33 -05:00
|
|
|
const noAccount = { username: false, control: 2 }
|
2023-03-23 10:34:06 +01:00
|
|
|
|
|
|
|
/*
|
|
|
|
* The useAccount hook
|
|
|
|
*/
|
|
|
|
export function useAccount() {
|
|
|
|
// (persisted) State (saved to local storage)
|
2023-03-24 16:33:14 +01:00
|
|
|
const [account, setAccount] = usePersistedAccount(noAccount)
|
|
|
|
const [token, setToken] = usePersistedToken(null)
|
2023-04-28 21:23:06 +02:00
|
|
|
const [seenUser, setSeenUser] = usePersistedSeenUser(false)
|
2023-03-23 10:34:06 +01:00
|
|
|
|
|
|
|
// Clear user data. This gets called when signing out
|
2023-04-28 21:23:06 +02:00
|
|
|
const logout = () => {
|
2023-03-23 10:34:06 +01:00
|
|
|
setAccount(noAccount)
|
|
|
|
setToken(null)
|
|
|
|
}
|
|
|
|
|
|
|
|
return {
|
|
|
|
account,
|
|
|
|
setAccount,
|
|
|
|
token,
|
|
|
|
setToken,
|
2023-04-28 21:23:06 +02:00
|
|
|
seenUser,
|
|
|
|
setSeenUser,
|
|
|
|
logout,
|
2023-03-23 10:34:06 +01:00
|
|
|
}
|
|
|
|
}
|