From 52a3fe743e6122d157eaab3ad7bab0c70a96676b Mon Sep 17 00:00:00 2001 From: Ivan Chen Date: Thu, 22 Oct 2020 17:42:29 -0400 Subject: [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 --- src/routes/authentication/AuthProvider.tsx | 68 +++++++++++++++++++++++------- 1 file changed, 52 insertions(+), 16 deletions(-) (limited to 'src/routes/authentication/AuthProvider.tsx') 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; + socialAccounts: Record; recentSearches: Array; 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 = { + Instagram: {}, + Facebook: {}, + Twitter: {}, +}; + export const AuthContext = createContext({ user: NO_USER, profile: NO_PROFILE, @@ -43,7 +57,7 @@ export const AuthContext = createContext({ 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(NO_PROFILE); const [avatar, setAvatar] = useState(null); const [cover, setCover] = useState(null); - const [instaPosts, setInstaPosts] = useState>([]); + const [socialAccounts, setSocialAccounts] = useState< + Record + >(NO_SOCIAL_ACCOUNTS); const [recentSearches, setRecentSearches] = useState< Array >([]); @@ -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 ( { profile, avatar, cover, - instaPosts, newMomentsAvailable, + socialAccounts, login: (id, username) => { setUser({...user, userId: id, username}); }, -- cgit v1.2.3-70-g09d2