aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/routes/authentication/AuthProvider.tsx27
-rw-r--r--src/screens/onboarding/Login.tsx23
2 files changed, 35 insertions, 15 deletions
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<Array<ProfilePreviewType>>([]);
const [followersNeedUpdate, setFollowersNeedUpdate] = useState<boolean>(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);
});
diff --git a/src/screens/onboarding/Login.tsx b/src/screens/onboarding/Login.tsx
index 8ff7ebc2..3fe857cd 100644
--- a/src/screens/onboarding/Login.tsx
+++ b/src/screens/onboarding/Login.tsx
@@ -1,23 +1,22 @@
-import React, {useRef, useState} from 'react';
+import AsyncStorage from '@react-native-community/async-storage';
import {RouteProp} from '@react-navigation/native';
import {StackNavigationProp} from '@react-navigation/stack';
+import React, {useRef, useState} from 'react';
import {
- View,
- Text,
Alert,
- StatusBar,
Image,
- TouchableOpacity,
- StyleSheet,
KeyboardAvoidingView,
Platform,
+ StatusBar,
+ StyleSheet,
+ Text,
+ TouchableOpacity,
+ View,
} from 'react-native';
-
-import {OnboardingStackParams} from '../../routes/onboarding';
+import {Background, SubmitButton, TaggInput} from '../../components';
+import {LOGIN_ENDPOINT, usernameRegex} from '../../constants';
import {AuthContext} from '../../routes/authentication';
-import {Background, TaggInput, SubmitButton} from '../../components';
-import {usernameRegex, LOGIN_ENDPOINT} from '../../constants';
-import AsyncStorage from '@react-native-community/async-storage';
+import {OnboardingStackParams} from '../../routes/onboarding';
import {UserType} from '../../types';
type VerificationScreenRouteProp = RouteProp<OnboardingStackParams, 'Login'>;
@@ -137,6 +136,8 @@ const Login: React.FC<LoginProps> = ({navigation}: LoginProps) => {
//Stores token received in the response into client's AsynStorage
try {
await AsyncStorage.setItem('token', data.token);
+ await AsyncStorage.setItem('userId', data.UserID);
+ await AsyncStorage.setItem('username', username);
login(data.UserID, username);
} catch (err) {
setUser(NO_USER);