From e08e775264538d337d084319542871a411ca218d Mon Sep 17 00:00:00 2001 From: Shravya Ramesh Date: Fri, 14 May 2021 13:49:48 -0700 Subject: Added functionality to remind users --- src/components/friends/InviteFriendTile.tsx | 136 +++++++++++++++++++--------- 1 file changed, 95 insertions(+), 41 deletions(-) (limited to 'src/components') diff --git a/src/components/friends/InviteFriendTile.tsx b/src/components/friends/InviteFriendTile.tsx index abd017d0..617ec203 100644 --- a/src/components/friends/InviteFriendTile.tsx +++ b/src/components/friends/InviteFriendTile.tsx @@ -19,58 +19,113 @@ import { SUCCESS_CONFIRM_INVITE_CONTACT_TITLE, SUCCESS_LAST_CONTACT_INVITE, } from '../../constants/strings'; -import {InviteContactType} from '../../screens/profile/InviteFriendsScreen'; import { - getRemainingInviteCount, - handleCreateInviteCode, - inviteFriendService, -} from '../../services'; + InviteContactType, + SearchResultType, +} from '../../screens/profile/InviteFriendsScreen'; +import {getRemainingInviteCount, inviteFriendService} from '../../services'; import {normalize} from '../../utils'; interface InviteFriendTileProps { item: InviteContactType; + remind: boolean; + results: SearchResultType; + setResults: Function; } -const InviteFriendTile: React.FC = ({item}) => { - const [invited, setInvited] = useState(false); +const InviteFriendTile: React.FC = ({ + item, + remind, + results, + setResults, +}) => { + const [invited, setInvited] = useState(remind); const {name} = useSelector((state: RootState) => state.user.profile); const [formatedPhoneNumber, setFormattedPhoneNumber] = useState(''); + const handleInviteFriend = async () => { const invites_left = await getRemainingInviteCount(); - if (invites_left > 0) { - Alert.alert( - SUCCESS_CONFIRM_INVITE_CONTACT_TITLE(invites_left), - SUCCESS_CONFIRM_INVITE_CONTACT_MESSAGE, - [ - {text: 'No!', style: 'cancel'}, - { - text: 'Yes!', - onPress: async () => { - setInvited(true); - const inviteCode = await handleCreateInviteCode(); - await inviteFriendService( - item.phoneNumber, - item.firstName, - item.lastName, - ); - Linking.openURL( - `sms:${item.phoneNumber}&body=${INVITE_USER_SMS_BODY( - item.firstName, - name, - inviteCode, - )}`, - ); - if (invites_left === 1) { - Alert.alert(SUCCESS_LAST_CONTACT_INVITE); - } - }, - }, - ], + // If user has been invited already, don't show alerts and change invite count + if (invited) { + const response = await inviteFriendService( + item.phoneNumber, + item.firstName, + item.lastName, ); - } else if (invites_left === -1 || invites_left === 0) { - Alert.alert(ERROR_NO_CONTACT_INVITE_LEFT); + const inviteCode = response?.invite_code; + if (inviteCode) { + Linking.openURL( + `sms:${item.phoneNumber}&body=${INVITE_USER_SMS_BODY( + item.firstName, + name, + inviteCode, + )}`, + ); + } } else { - Alert.alert(ERROR_SOMETHING_WENT_WRONG); + if (invites_left > 0) { + Alert.alert( + SUCCESS_CONFIRM_INVITE_CONTACT_TITLE(invites_left), + SUCCESS_CONFIRM_INVITE_CONTACT_MESSAGE, + [ + {text: 'No!', style: 'cancel'}, + { + text: 'Yes!', + onPress: async () => { + const response = await inviteFriendService( + item.phoneNumber, + item.firstName, + item.lastName, + ); + const inviteCode = response?.invite_code; + if (inviteCode) { + // Add user to Pending Users list + const newPendingUser: InviteContactType = { + phoneNumber: item.phoneNumber, + firstName: item.firstName, + lastName: item.lastName, + }; + + // Filtering user from nonUsersFromContacts list + const filteredNonUsers = results.nonUsersFromContacts.filter( + (user: InviteContactType) => + user.phoneNumber !== item.phoneNumber, + ); + + // Open iMessages + Linking.openURL( + `sms:${item.phoneNumber}&body=${INVITE_USER_SMS_BODY( + item.firstName, + name, + inviteCode, + )}`, + ); + + // Update results after navigating out of the app + setTimeout(() => { + setInvited(true); + setResults({ + ...results, + pendingUsers: [...results.pendingUsers, newPendingUser], + nonUsersFromContacts: filteredNonUsers, + }); + }, 500); + + if (invites_left === 1) { + Alert.alert(SUCCESS_LAST_CONTACT_INVITE); + } + } else { + Alert.alert(ERROR_SOMETHING_WENT_WRONG); + } + }, + }, + ], + ); + } else if (invites_left === -1 || invites_left === 0) { + Alert.alert(ERROR_NO_CONTACT_INVITE_LEFT); + } else { + Alert.alert(ERROR_SOMETHING_WENT_WRONG); + } } }; @@ -99,7 +154,6 @@ const InviteFriendTile: React.FC = ({item}) => { {formatedPhoneNumber} = ({item}) => { styles.buttonTitle, invited ? styles.pendingButtonTitle : styles.inviteButtonTitle, ]}> - {invited ? 'Pending' : 'Invite'} + {invited ? 'Remind' : 'Invite'} -- cgit v1.2.3-70-g09d2 From 21e8d9d31c7d51926f53a20e138e664f766f4595 Mon Sep 17 00:00:00 2001 From: Ivan Chen Date: Wed, 19 May 2021 17:33:32 -0400 Subject: Move invites left logic --- src/components/friends/InviteFriendTile.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/components') diff --git a/src/components/friends/InviteFriendTile.tsx b/src/components/friends/InviteFriendTile.tsx index 617ec203..82e7effe 100644 --- a/src/components/friends/InviteFriendTile.tsx +++ b/src/components/friends/InviteFriendTile.tsx @@ -44,7 +44,6 @@ const InviteFriendTile: React.FC = ({ const [formatedPhoneNumber, setFormattedPhoneNumber] = useState(''); const handleInviteFriend = async () => { - const invites_left = await getRemainingInviteCount(); // If user has been invited already, don't show alerts and change invite count if (invited) { const response = await inviteFriendService( @@ -63,6 +62,7 @@ const InviteFriendTile: React.FC = ({ ); } } else { + const invites_left = await getRemainingInviteCount(); if (invites_left > 0) { Alert.alert( SUCCESS_CONFIRM_INVITE_CONTACT_TITLE(invites_left), -- cgit v1.2.3-70-g09d2 From 1a4113ee3e47be229e28fc5a935ada174781b00b Mon Sep 17 00:00:00 2001 From: Ivan Chen Date: Wed, 19 May 2021 17:33:39 -0400 Subject: Add reminding flag --- src/components/friends/InviteFriendTile.tsx | 2 ++ src/services/UserFriendsService.ts | 2 ++ 2 files changed, 4 insertions(+) (limited to 'src/components') diff --git a/src/components/friends/InviteFriendTile.tsx b/src/components/friends/InviteFriendTile.tsx index 82e7effe..50085f98 100644 --- a/src/components/friends/InviteFriendTile.tsx +++ b/src/components/friends/InviteFriendTile.tsx @@ -50,6 +50,7 @@ const InviteFriendTile: React.FC = ({ item.phoneNumber, item.firstName, item.lastName, + true, ); const inviteCode = response?.invite_code; if (inviteCode) { @@ -76,6 +77,7 @@ const InviteFriendTile: React.FC = ({ item.phoneNumber, item.firstName, item.lastName, + false, ); const inviteCode = response?.invite_code; if (inviteCode) { diff --git a/src/services/UserFriendsService.ts b/src/services/UserFriendsService.ts index d60062a3..a53ceef6 100644 --- a/src/services/UserFriendsService.ts +++ b/src/services/UserFriendsService.ts @@ -220,6 +220,7 @@ export const inviteFriendService = async ( phoneNumber: string, inviteeFirstName: string, inviteeLastName: string, + reminding: boolean, ) => { try { const token = await AsyncStorage.getItem('token'); @@ -232,6 +233,7 @@ export const inviteFriendService = async ( invitee_phone_number: phoneNumber, invitee_first_name: inviteeFirstName, invitee_last_name: inviteeLastName, + reminding: reminding, }), }); if (response.status === 201 || response.status === 200) { -- cgit v1.2.3-70-g09d2 From 6556b1dd10d89f56153829cd8651caa86b28218e Mon Sep 17 00:00:00 2001 From: Ivan Chen Date: Wed, 19 May 2021 17:41:18 -0400 Subject: Clean up code --- src/components/friends/InviteFriendTile.tsx | 114 ++++++++++++++-------------- 1 file changed, 55 insertions(+), 59 deletions(-) (limited to 'src/components') diff --git a/src/components/friends/InviteFriendTile.tsx b/src/components/friends/InviteFriendTile.tsx index 50085f98..48f65a94 100644 --- a/src/components/friends/InviteFriendTile.tsx +++ b/src/components/friends/InviteFriendTile.tsx @@ -64,70 +64,66 @@ const InviteFriendTile: React.FC = ({ } } else { const invites_left = await getRemainingInviteCount(); - if (invites_left > 0) { - Alert.alert( - SUCCESS_CONFIRM_INVITE_CONTACT_TITLE(invites_left), - SUCCESS_CONFIRM_INVITE_CONTACT_MESSAGE, - [ - {text: 'No!', style: 'cancel'}, - { - text: 'Yes!', - onPress: async () => { - const response = await inviteFriendService( - item.phoneNumber, - item.firstName, - item.lastName, - false, - ); - const inviteCode = response?.invite_code; - if (inviteCode) { - // Add user to Pending Users list - const newPendingUser: InviteContactType = { - phoneNumber: item.phoneNumber, - firstName: item.firstName, - lastName: item.lastName, - }; + if (invites_left < 1) { + Alert.alert(ERROR_NO_CONTACT_INVITE_LEFT); + } + Alert.alert( + SUCCESS_CONFIRM_INVITE_CONTACT_TITLE(invites_left), + SUCCESS_CONFIRM_INVITE_CONTACT_MESSAGE, + [ + {text: 'No!', style: 'cancel'}, + { + text: 'Yes!', + onPress: async () => { + const response = await inviteFriendService( + item.phoneNumber, + item.firstName, + item.lastName, + false, + ); + const inviteCode = response?.invite_code; + if (!inviteCode) { + Alert.alert(ERROR_SOMETHING_WENT_WRONG); + } + // Add user to Pending Users list + const newPendingUser: InviteContactType = { + phoneNumber: item.phoneNumber, + firstName: item.firstName, + lastName: item.lastName, + }; - // Filtering user from nonUsersFromContacts list - const filteredNonUsers = results.nonUsersFromContacts.filter( - (user: InviteContactType) => - user.phoneNumber !== item.phoneNumber, - ); + // Filtering user from nonUsersFromContacts list + const filteredNonUsers = results.nonUsersFromContacts.filter( + (user: InviteContactType) => + user.phoneNumber !== item.phoneNumber, + ); - // Open iMessages - Linking.openURL( - `sms:${item.phoneNumber}&body=${INVITE_USER_SMS_BODY( - item.firstName, - name, - inviteCode, - )}`, - ); + // Open iMessages + Linking.openURL( + `sms:${item.phoneNumber}&body=${INVITE_USER_SMS_BODY( + item.firstName, + name, + inviteCode, + )}`, + ); - // Update results after navigating out of the app - setTimeout(() => { - setInvited(true); - setResults({ - ...results, - pendingUsers: [...results.pendingUsers, newPendingUser], - nonUsersFromContacts: filteredNonUsers, - }); - }, 500); + // Update results after navigating out of the app + setTimeout(() => { + setInvited(true); + setResults({ + ...results, + pendingUsers: [...results.pendingUsers, newPendingUser], + nonUsersFromContacts: filteredNonUsers, + }); + }, 500); - if (invites_left === 1) { - Alert.alert(SUCCESS_LAST_CONTACT_INVITE); - } - } else { - Alert.alert(ERROR_SOMETHING_WENT_WRONG); - } - }, + if (invites_left === 1) { + Alert.alert(SUCCESS_LAST_CONTACT_INVITE); + } }, - ], - ); - } else if (invites_left === -1 || invites_left === 0) { - Alert.alert(ERROR_NO_CONTACT_INVITE_LEFT); - } else { - Alert.alert(ERROR_SOMETHING_WENT_WRONG); - } + }, + ], + ); } }; -- cgit v1.2.3-70-g09d2