diff options
author | Ivan Chen <ivan@thetaggid.com> | 2020-10-22 17:42:29 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-10-22 17:42:29 -0400 |
commit | 52a3fe743e6122d157eaab3ad7bab0c70a96676b (patch) | |
tree | 564c5df3864a0d0fe09f7c18613d4cf5a1093170 /src/routes/authentication | |
parent | 08f9aebbaef871629323767c93c9e54cea527bed (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.tsx | 68 |
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}); }, |