diff options
Diffstat (limited to 'src/hooks')
| -rw-r--r-- | src/hooks/useLoginState.js | 33 | 
1 files changed, 33 insertions, 0 deletions
| diff --git a/src/hooks/useLoginState.js b/src/hooks/useLoginState.js new file mode 100644 index 0000000..b7c7221 --- /dev/null +++ b/src/hooks/useLoginState.js @@ -0,0 +1,33 @@ +import {useState} from 'react'; + +export default function useLoginState() { +  const [userInfo, setUserInfoState] = useState( +    localStorage.userInfo ? +      JSON.parse(localStorage.userInfo) : +      {} +  ); + +  function setUserInfo(userInfo) { +    setUserInfoState(userInfo); +    localStorage.userInfo = JSON.stringify(userInfo || {}); +  } + +  async function login(username, password) { +    console.log(`logging in: ${username}, ${password}`); +    // const userInfo = await api.login() +    const userInfo = { +      username +    }; +    console.log('Login success'); +    setUserInfo(userInfo); +    return userInfo; +  }  + +  function logout() { +    setUserInfo({}); +  } + +  const isLoggedIn = !!userInfo?.username; +   +  return {userInfo, isLoggedIn, login, logout}; +} | 
