diff options
author | dan <[email protected]> | 2023-08-28 10:55:50 -0400 |
---|---|---|
committer | dan <[email protected]> | 2023-08-28 10:55:50 -0400 |
commit | 7c9345f41d9c86142019cce05ca0495408b01730 (patch) | |
tree | 45da541a80047da04191c48accee490447f8a234 /src/hooks | |
parent | f8cf6c21d238fea96192ad3f418ab7489092355f (diff) | |
download | draggable-form-demo-7c9345f41d9c86142019cce05ca0495408b01730.tar.gz draggable-form-demo-7c9345f41d9c86142019cce05ca0495408b01730.tar.bz2 draggable-form-demo-7c9345f41d9c86142019cce05ca0495408b01730.zip |
feat: skeleton of app
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}; +} |