
This removes the useApp hook from all org pages in favor of various context. This means there is no longer global state that gets passed around, instead each component that requires access to something shared (like account, or navigation) can just use the context instead. This is a first step, as a lot of shared components stil rely on app not to mention the dev and lab sites.
39 lines
937 B
JavaScript
39 lines
937 B
JavaScript
import createPersistedState from 'use-persisted-state'
|
|
|
|
/*
|
|
* Set up local storage state for account & token
|
|
*/
|
|
const usePersistedAccount = createPersistedState('fs-account')
|
|
const usePersistedToken = createPersistedState('fs-token')
|
|
const usePersistedSeenUser = createPersistedState('fs-seen-user')
|
|
|
|
/*
|
|
* Make it possible to always check for account.username
|
|
*/
|
|
const noAccount = { username: false }
|
|
|
|
/*
|
|
* The useAccount hook
|
|
*/
|
|
export function useAccount() {
|
|
// (persisted) State (saved to local storage)
|
|
const [account, setAccount] = usePersistedAccount(noAccount)
|
|
const [token, setToken] = usePersistedToken(null)
|
|
const [seenUser, setSeenUser] = usePersistedSeenUser(false)
|
|
|
|
// Clear user data. This gets called when signing out
|
|
const logout = () => {
|
|
setAccount(noAccount)
|
|
setToken(null)
|
|
}
|
|
|
|
return {
|
|
account,
|
|
setAccount,
|
|
token,
|
|
setToken,
|
|
seenUser,
|
|
setSeenUser,
|
|
logout,
|
|
}
|
|
}
|