aboutsummaryrefslogtreecommitdiff
path: root/src/routes/authentication
diff options
context:
space:
mode:
authorIvan Chen <ivan@thetaggid.com>2020-10-22 17:42:29 -0400
committerGitHub <noreply@github.com>2020-10-22 17:42:29 -0400
commit52a3fe743e6122d157eaab3ad7bab0c70a96676b (patch)
tree564c5df3864a0d0fe09f7c18613d4cf5a1093170 /src/routes/authentication
parent08f9aebbaef871629323767c93c9e54cea527bed (diff)
[TMA-242] Twitter and Facebook Tagg View (#63)
* modified the way we store social media data, initial skeleton * MVP? Twitter done? * cleaned up some things * forgot to lint and cleaned up some more code * minor change to text display * fixed some UI bug, linting, and minor adjustment to posts UI * fixed a couple of things * added DateLabel, Facebook taggs view, fixed minor stuff * Some small changes for the PR * removed unused Feed Co-authored-by: Ashm Walia <ashmwalia@outlook.com>
Diffstat (limited to 'src/routes/authentication')
-rw-r--r--src/routes/authentication/AuthProvider.tsx68
1 files changed, 52 insertions, 16 deletions
diff --git a/src/routes/authentication/AuthProvider.tsx b/src/routes/authentication/AuthProvider.tsx
index 8dd9fd73..a705f074 100644
--- a/src/routes/authentication/AuthProvider.tsx
+++ b/src/routes/authentication/AuthProvider.tsx
@@ -1,19 +1,23 @@
-import React, {useEffect} from 'react';
-import {createContext, useState} from 'react';
-import {
- UserType,
- ProfileType,
- InstagramPostType,
- ProfilePreviewType,
-} from '../../types';
import AsyncStorage from '@react-native-community/async-storage';
+import React, {createContext, useEffect, useState} from 'react';
+import {
+ GET_FB_POSTS_ENDPOINT,
+ GET_IG_POSTS_ENDPOINT,
+ GET_TWITTER_POSTS_ENDPOINT,
+} from '../../constants';
import {
- loadProfileInfo,
loadAvatar,
loadCover,
- loadInstaPosts,
+ loadProfileInfo,
loadRecentlySearchedUsers,
+ loadSocialPosts,
} from '../../services';
+import {
+ ProfilePreviewType,
+ ProfileType,
+ SocialAccountType,
+ UserType,
+} from '../../types';
interface AuthContextProps {
user: UserType;
@@ -22,20 +26,30 @@ interface AuthContextProps {
logout: () => void;
avatar: string | null;
cover: string | null;
- instaPosts: Array<InstagramPostType>;
+ socialAccounts: Record<string, SocialAccountType>;
recentSearches: Array<ProfilePreviewType>;
newMomentsAvailable: boolean;
updateMoments: (value: boolean) => void;
}
+
const NO_USER: UserType = {
userId: '',
username: '',
};
+
const NO_PROFILE: ProfileType = {
biography: '',
website: '',
name: '',
};
+
+// Not necessary, but safer, in case SocialAccountType object is undefined
+const NO_SOCIAL_ACCOUNTS: Record<string, SocialAccountType> = {
+ Instagram: {},
+ Facebook: {},
+ Twitter: {},
+};
+
export const AuthContext = createContext<AuthContextProps>({
user: NO_USER,
profile: NO_PROFILE,
@@ -43,7 +57,7 @@ export const AuthContext = createContext<AuthContextProps>({
logout: () => {},
avatar: null,
cover: null,
- instaPosts: [],
+ socialAccounts: NO_SOCIAL_ACCOUNTS,
recentSearches: [],
newMomentsAvailable: true,
updateMoments: () => {},
@@ -57,7 +71,9 @@ const AuthProvider: React.FC = ({children}) => {
const [profile, setProfile] = useState<ProfileType>(NO_PROFILE);
const [avatar, setAvatar] = useState<string | null>(null);
const [cover, setCover] = useState<string | null>(null);
- const [instaPosts, setInstaPosts] = useState<Array<InstagramPostType>>([]);
+ const [socialAccounts, setSocialAccounts] = useState<
+ Record<string, SocialAccountType>
+ >(NO_SOCIAL_ACCOUNTS);
const [recentSearches, setRecentSearches] = useState<
Array<ProfilePreviewType>
>([]);
@@ -78,14 +94,34 @@ const AuthProvider: React.FC = ({children}) => {
loadProfileInfo(token, userId, setProfile);
loadAvatar(token, userId, setAvatar);
loadCover(token, userId, setCover);
- loadInstaPosts(token, userId, setInstaPosts);
loadRecentlySearchedUsers(setRecentSearches);
+ loadSocialPosts(
+ token,
+ userId,
+ 'Instagram',
+ GET_IG_POSTS_ENDPOINT,
+ socialAccounts,
+ ).then((newSocialAccounts) => setSocialAccounts(newSocialAccounts));
+ loadSocialPosts(
+ token,
+ userId,
+ 'Facebook',
+ GET_FB_POSTS_ENDPOINT,
+ socialAccounts,
+ ).then((newSocialAccounts) => setSocialAccounts(newSocialAccounts));
+ loadSocialPosts(
+ token,
+ userId,
+ 'Twitter',
+ GET_TWITTER_POSTS_ENDPOINT,
+ socialAccounts,
+ ).then((newSocialAccounts) => setSocialAccounts(newSocialAccounts));
} catch (err) {
console.log(err);
}
};
loadData();
- }, [userId]);
+ }, [socialAccounts, userId]);
return (
<AuthContext.Provider
@@ -94,8 +130,8 @@ const AuthProvider: React.FC = ({children}) => {
profile,
avatar,
cover,
- instaPosts,
newMomentsAvailable,
+ socialAccounts,
login: (id, username) => {
setUser({...user, userId: id, username});
},