From 5c01225acf5aa4c5be3b4638779d1f766c054eca Mon Sep 17 00:00:00 2001 From: Shravya Ramesh Date: Fri, 14 May 2021 13:46:35 -0700 Subject: Added pending user list --- src/screens/profile/InviteFriendsScreen.tsx | 96 ++++++++++++++++++++--------- 1 file changed, 68 insertions(+), 28 deletions(-) (limited to 'src/screens') diff --git a/src/screens/profile/InviteFriendsScreen.tsx b/src/screens/profile/InviteFriendsScreen.tsx index e1f739c5..87b00aaf 100644 --- a/src/screens/profile/InviteFriendsScreen.tsx +++ b/src/screens/profile/InviteFriendsScreen.tsx @@ -1,19 +1,28 @@ -import React, {useEffect, useState} from 'react'; +import {RouteProp} from '@react-navigation/native'; +import React, {useEffect, useMemo, useState} from 'react'; import { - View, - Text, - TouchableOpacity, - SafeAreaView, - StyleSheet, - TextInput, FlatList, Keyboard, Linking, + SafeAreaView, + ScrollView, StatusBar, + StyleSheet, + Text, + TextInput, + TouchableOpacity, TouchableWithoutFeedback, - ScrollView, + View, } from 'react-native'; +import {checkPermission} from 'react-native-contacts'; +import Animated from 'react-native-reanimated'; +import Icon from 'react-native-vector-icons/Feather'; import {useDispatch, useStore} from 'react-redux'; +import {ProfilePreview, TabsGradient} from '../../components'; +import {InviteFriendTile} from '../../components/friends'; +import {TAGG_LIGHT_BLUE} from '../../constants'; +import {MainStackParams} from '../../routes'; +import {usersFromContactsService} from '../../services/UserFriendsService'; import {ProfilePreviewType} from '../../types'; import { extractContacts, @@ -25,15 +34,6 @@ import { SCREEN_WIDTH, StatusBarHeight, } from '../../utils'; -import {checkPermission} from 'react-native-contacts'; -import {usersFromContactsService} from '../../services/UserFriendsService'; -import {ProfilePreview, TabsGradient} from '../../components'; -import Animated from 'react-native-reanimated'; -import Icon from 'react-native-vector-icons/Feather'; -import {InviteFriendTile} from '../../components/friends'; -import {TAGG_LIGHT_BLUE} from '../../constants'; -import {MainStackParams} from '../../routes'; -import {RouteProp} from '@react-navigation/native'; const AnimatedIcon = Animated.createAnimatedComponent(Icon); export type InviteContactType = { @@ -42,9 +42,10 @@ export type InviteContactType = { phoneNumber: string; }; -type SearchResultType = { +export type SearchResultType = { usersFromContacts: ProfilePreviewType[]; nonUsersFromContacts: InviteContactType[]; + pendingUsers: InviteContactType[]; }; type InviteFriendsScreenRouteProp = RouteProp< @@ -64,9 +65,11 @@ const InviteFriendsScreen: React.FC = ({route}) => { ProfilePreviewType[] >([]); const [nonUsersFromContacts, setNonUsersFromContacts] = useState<[]>([]); + const [pendingUsers, setPendingUsers] = useState<[]>([]); const [results, setResults] = useState({ usersFromContacts: usersFromContacts, nonUsersFromContacts: nonUsersFromContacts, + pendingUsers: pendingUsers, }); const [query, setQuery] = useState(''); @@ -81,6 +84,7 @@ const InviteFriendsScreen: React.FC = ({route}) => { setResults({ usersFromContacts: response.existing_tagg_users, nonUsersFromContacts: response.invite_from_contacts, + pendingUsers: response.pending_users, }); } else { Linking.openSettings(); @@ -120,6 +124,7 @@ const InviteFriendsScreen: React.FC = ({route}) => { setResults({ usersFromContacts: usersFromContacts, nonUsersFromContacts: nonUsersFromContacts, + pendingUsers: pendingUsers, }); } }; @@ -168,6 +173,48 @@ const InviteFriendsScreen: React.FC = ({route}) => { ); + const PendingList = useMemo( + () => ( + item.phoneNumber} + renderItem={({item}) => ( + + )} + /> + ), + [results.pendingUsers], + ); + + const InviteList = useMemo( + () => ( + item.phoneNumber} + renderItem={({item}) => ( + + )} + /> + ), + [results.nonUsersFromContacts], + ); + return ( @@ -210,19 +257,12 @@ const InviteFriendsScreen: React.FC = ({route}) => { - Contacts on Tagg - + Pending Users + {PendingList} Invite your friends! - item.phoneNumber} - renderItem={({item}) => } - /> + {InviteList} -- cgit v1.2.3-70-g09d2 From e5e6328a1189ebb3f78e6eee4213e0b0519f716a Mon Sep 17 00:00:00 2001 From: Shravya Ramesh Date: Fri, 14 May 2021 16:42:56 -0700 Subject: moved user from contacts code to legacy --- src/screens/main/NotificationsScreen.tsx | 4 +- src/screens/profile/InviteFriendsScreen.tsx | 90 +------------------ src/screens/profile/legacy/UsersFromContacts.tsx | 106 +++++++++++++++++++++++ 3 files changed, 110 insertions(+), 90 deletions(-) create mode 100644 src/screens/profile/legacy/UsersFromContacts.tsx (limited to 'src/screens') diff --git a/src/screens/main/NotificationsScreen.tsx b/src/screens/main/NotificationsScreen.tsx index 7e2f082c..bce48ef2 100644 --- a/src/screens/main/NotificationsScreen.tsx +++ b/src/screens/main/NotificationsScreen.tsx @@ -259,9 +259,7 @@ const NotificationsScreen: React.FC = () => { onPress={async () => { const permission = await checkPermission(); if (permission === 'authorized') { - navigation.navigate('InviteFriendsScreen', { - screenType: ScreenType.Profile, - }); + navigation.navigate('InviteFriendsScreen'); } else { Alert.alert( '"Tagg" Would Like to Access Your Contacts', diff --git a/src/screens/profile/InviteFriendsScreen.tsx b/src/screens/profile/InviteFriendsScreen.tsx index 87b00aaf..b3653d39 100644 --- a/src/screens/profile/InviteFriendsScreen.tsx +++ b/src/screens/profile/InviteFriendsScreen.tsx @@ -10,23 +10,19 @@ import { StyleSheet, Text, TextInput, - TouchableOpacity, TouchableWithoutFeedback, View, } from 'react-native'; import {checkPermission} from 'react-native-contacts'; import Animated from 'react-native-reanimated'; import Icon from 'react-native-vector-icons/Feather'; -import {useDispatch, useStore} from 'react-redux'; -import {ProfilePreview, TabsGradient} from '../../components'; +import {TabsGradient} from '../../components'; import {InviteFriendTile} from '../../components/friends'; -import {TAGG_LIGHT_BLUE} from '../../constants'; import {MainStackParams} from '../../routes'; import {usersFromContactsService} from '../../services/UserFriendsService'; import {ProfilePreviewType} from '../../types'; import { extractContacts, - handleAddFriend, HeaderHeight, isIPhoneX, normalize, @@ -57,15 +53,12 @@ interface InviteFriendsScreenProps { route: InviteFriendsScreenRouteProp; } -const InviteFriendsScreen: React.FC = ({route}) => { - const {screenType} = route.params; - const dispatch = useDispatch(); - const state = useStore().getState(); +const InviteFriendsScreen: React.FC = ({}) => { const [usersFromContacts, setUsersFromContacts] = useState< ProfilePreviewType[] >([]); const [nonUsersFromContacts, setNonUsersFromContacts] = useState<[]>([]); - const [pendingUsers, setPendingUsers] = useState<[]>([]); + const [pendingUsers] = useState<[]>([]); const [results, setResults] = useState({ usersFromContacts: usersFromContacts, nonUsersFromContacts: nonUsersFromContacts, @@ -131,48 +124,6 @@ const InviteFriendsScreen: React.FC = ({route}) => { search(); }, [query]); - const UsersFromContacts = () => ( - <> - item.username} - renderItem={({item}) => ( - - - - - { - handleAddFriend(screenType, item, dispatch, state).then( - (success) => { - if (success) { - let users = usersFromContacts; - const filteredUsers = users.filter( - (user) => user.username !== item.username, - ); - setResults({ - ...results, - usersFromContacts: filteredUsers, - }); - } - }, - ); - }}> - Add Friend - - - )} - /> - - ); - const PendingList = useMemo( () => ( = ({ + screenType, + results, + setResults, +}) => { + const dispatch = useDispatch(); + const state: RootState = useStore().getState(); + return ( + <> + item.username} + renderItem={({item}) => ( + + + + + { + handleAddFriend(screenType, item, dispatch, state).then( + (success) => { + if (success) { + let users = results.usersFromContacts; + const filteredUsers = users.filter( + (user) => user.username !== item.username, + ); + setResults({ + ...results, + usersFromContacts: filteredUsers, + }); + } + }, + ); + }}> + Add Friend + + + )} + /> + + ); +}; + +export default UsersFromContacts; + +const styles = StyleSheet.create({ + ppContainer: { + alignSelf: 'center', + flexDirection: 'row', + justifyContent: 'space-between', + width: '100%', + height: normalize(42), + alignItems: 'center', + marginBottom: '5%', + marginHorizontal: 10, + }, + friend: { + alignSelf: 'center', + height: '100%', + }, + addFriendButton: { + alignSelf: 'center', + justifyContent: 'center', + alignItems: 'center', + width: 82, + height: 25, + borderColor: TAGG_LIGHT_BLUE, + borderWidth: 2, + borderRadius: 2, + padding: 0, + backgroundColor: TAGG_LIGHT_BLUE, + }, + addFriendButtonTitle: { + color: 'white', + padding: 0, + fontSize: normalize(11), + fontWeight: '700', + lineHeight: normalize(13.13), + letterSpacing: normalize(0.6), + paddingHorizontal: '3.8%', + }, +}); -- cgit v1.2.3-70-g09d2 From 4591ff7a85c1582566981f22dbb828f4cfc48b57 Mon Sep 17 00:00:00 2001 From: Shravya Ramesh Date: Fri, 14 May 2021 17:11:34 -0700 Subject: removed users from contacts list --- src/screens/profile/InviteFriendsScreen.tsx | 4 ---- 1 file changed, 4 deletions(-) (limited to 'src/screens') diff --git a/src/screens/profile/InviteFriendsScreen.tsx b/src/screens/profile/InviteFriendsScreen.tsx index b3653d39..8f5acebf 100644 --- a/src/screens/profile/InviteFriendsScreen.tsx +++ b/src/screens/profile/InviteFriendsScreen.tsx @@ -39,7 +39,6 @@ export type InviteContactType = { }; export type SearchResultType = { - usersFromContacts: ProfilePreviewType[]; nonUsersFromContacts: InviteContactType[]; pendingUsers: InviteContactType[]; }; @@ -60,7 +59,6 @@ const InviteFriendsScreen: React.FC = ({}) => { const [nonUsersFromContacts, setNonUsersFromContacts] = useState<[]>([]); const [pendingUsers] = useState<[]>([]); const [results, setResults] = useState({ - usersFromContacts: usersFromContacts, nonUsersFromContacts: nonUsersFromContacts, pendingUsers: pendingUsers, }); @@ -75,7 +73,6 @@ const InviteFriendsScreen: React.FC = ({}) => { await setUsersFromContacts(response.existing_tagg_users); await setNonUsersFromContacts(response.invite_from_contacts); setResults({ - usersFromContacts: response.existing_tagg_users, nonUsersFromContacts: response.invite_from_contacts, pendingUsers: response.pending_users, }); @@ -115,7 +112,6 @@ const InviteFriendsScreen: React.FC = ({}) => { setResults(sanitizedResult); } else { setResults({ - usersFromContacts: usersFromContacts, nonUsersFromContacts: nonUsersFromContacts, pendingUsers: pendingUsers, }); -- cgit v1.2.3-70-g09d2 From 89685a45822ece75d6d075e581397968f538cfbf Mon Sep 17 00:00:00 2001 From: Shravya Ramesh Date: Fri, 14 May 2021 17:34:48 -0700 Subject: padding issue fixed --- src/screens/profile/InviteFriendsScreen.tsx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src/screens') diff --git a/src/screens/profile/InviteFriendsScreen.tsx b/src/screens/profile/InviteFriendsScreen.tsx index 8f5acebf..06752dd4 100644 --- a/src/screens/profile/InviteFriendsScreen.tsx +++ b/src/screens/profile/InviteFriendsScreen.tsx @@ -203,7 +203,11 @@ const InviteFriendsScreen: React.FC = ({}) => { /> - + Pending Users {PendingList} -- cgit v1.2.3-70-g09d2 From d701ab9d521825a5494090b02ce9e56a79ef8e31 Mon Sep 17 00:00:00 2001 From: Shravya Ramesh Date: Tue, 18 May 2021 16:49:27 -0700 Subject: fix undefined pending users length --- src/screens/profile/InviteFriendsScreen.tsx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src/screens') diff --git a/src/screens/profile/InviteFriendsScreen.tsx b/src/screens/profile/InviteFriendsScreen.tsx index 06752dd4..bf91e8f3 100644 --- a/src/screens/profile/InviteFriendsScreen.tsx +++ b/src/screens/profile/InviteFriendsScreen.tsx @@ -206,7 +206,11 @@ const InviteFriendsScreen: React.FC = ({}) => { Pending Users {PendingList} -- cgit v1.2.3-70-g09d2