From 6aa3bf3068d60f5ffac5af43ed98175e4735903f Mon Sep 17 00:00:00 2001 From: Ivan Chen Date: Mon, 2 Nov 2020 13:23:04 -0500 Subject: added async storage login for userid and username (#89) --- src/routes/authentication/AuthProvider.tsx | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) (limited to 'src/routes') diff --git a/src/routes/authentication/AuthProvider.tsx b/src/routes/authentication/AuthProvider.tsx index 55a6f3ad..383b4d5b 100644 --- a/src/routes/authentication/AuthProvider.tsx +++ b/src/routes/authentication/AuthProvider.tsx @@ -4,19 +4,19 @@ import {INTEGRATED_SOCIAL_LIST} from '../../constants'; import { loadAvatar, loadCover, + loadFollowers, + loadFollowing, + loadMoments, loadProfileInfo, loadRecentlySearchedUsers, loadSocialPosts, - loadMoments, - loadFollowers, - loadFollowing, } from '../../services'; import { + MomentType, ProfilePreviewType, ProfileType, SocialAccountType, UserType, - MomentType, } from '../../types'; interface AuthContextProps { @@ -98,6 +98,23 @@ const AuthProvider: React.FC = ({children}) => { const [following, setFollowing] = useState>([]); const [followersNeedUpdate, setFollowersNeedUpdate] = useState(true); const {userId} = user; + + useEffect(() => { + const loadUserInfoFromStorage = async () => { + const [id, username, token] = await Promise.all([ + AsyncStorage.getItem('userId'), + AsyncStorage.getItem('username'), + AsyncStorage.getItem('token'), + ]); + if (id && username && token) { + setUser({...user, userId: id, username}); + } + }; + if (user === NO_USER) { + loadUserInfoFromStorage(); + } + }, [user]); + useEffect(() => { if (!userId) { return; @@ -196,6 +213,8 @@ const AuthProvider: React.FC = ({children}) => { try { new Promise(() => { AsyncStorage.removeItem('token'); + AsyncStorage.removeItem('userId'); + AsyncStorage.removeItem('username'); }).then(() => { setUser(NO_USER); }); -- cgit v1.2.3-70-g09d2