aboutsummaryrefslogtreecommitdiff
path: root/src/components/friends/InviteFriendTile.tsx
diff options
context:
space:
mode:
authorIvan Chen <ivan@tagg.id>2021-05-13 17:55:46 -0400
committerGitHub <noreply@github.com>2021-05-13 17:55:46 -0400
commit848afa989c2a0c324b65778dc05e03b7856f62c3 (patch)
tree40a733f00132451a583e7c6cae6a40bff25d8344 /src/components/friends/InviteFriendTile.tsx
parent36a26cc7716913e8b243553169ae91588bc8e413 (diff)
parent8db9bb83850e8e368700cb9006b8666741360653 (diff)
Merge pull request #419 from grusuTagg/tma843-fix-invite-system
[TMA-860] Added Individual SMS Invite Functionality
Diffstat (limited to 'src/components/friends/InviteFriendTile.tsx')
-rw-r--r--src/components/friends/InviteFriendTile.tsx56
1 files changed, 43 insertions, 13 deletions
diff --git a/src/components/friends/InviteFriendTile.tsx b/src/components/friends/InviteFriendTile.tsx
index 5237389a..abd017d0 100644
--- a/src/components/friends/InviteFriendTile.tsx
+++ b/src/components/friends/InviteFriendTile.tsx
@@ -1,21 +1,30 @@
import React, {useEffect, useState} from 'react';
import {
Alert,
+ Linking,
StyleSheet,
Text,
TouchableOpacity,
TouchableWithoutFeedback,
View,
} from 'react-native';
+import {useSelector} from 'react-redux';
+import {RootState} from 'src/store/rootReducer';
import {TAGG_LIGHT_BLUE} from '../../constants';
import {
ERROR_NO_CONTACT_INVITE_LEFT,
ERROR_SOMETHING_WENT_WRONG,
- SUCCESS_INVITE_CONTACT,
+ INVITE_USER_SMS_BODY,
+ SUCCESS_CONFIRM_INVITE_CONTACT_MESSAGE,
+ SUCCESS_CONFIRM_INVITE_CONTACT_TITLE,
SUCCESS_LAST_CONTACT_INVITE,
} from '../../constants/strings';
import {InviteContactType} from '../../screens/profile/InviteFriendsScreen';
-import {inviteFriendService} from '../../services';
+import {
+ getRemainingInviteCount,
+ handleCreateInviteCode,
+ inviteFriendService,
+} from '../../services';
import {normalize} from '../../utils';
interface InviteFriendTileProps {
@@ -24,20 +33,41 @@ interface InviteFriendTileProps {
const InviteFriendTile: React.FC<InviteFriendTileProps> = ({item}) => {
const [invited, setInvited] = useState<boolean>(false);
+ const {name} = useSelector((state: RootState) => state.user.profile);
const [formatedPhoneNumber, setFormattedPhoneNumber] = useState<string>('');
const handleInviteFriend = async () => {
- const invites_left = await inviteFriendService(
- item.phoneNumber,
- item.firstName,
- item.lastName,
- );
+ const invites_left = await getRemainingInviteCount();
if (invites_left > 0) {
- setInvited(true);
- Alert.alert(SUCCESS_INVITE_CONTACT(invites_left));
- } else if (invites_left === 0) {
- setInvited(true);
- Alert.alert(SUCCESS_LAST_CONTACT_INVITE);
- } else if (invites_left === -1) {
+ 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);
+ }
+ },
+ },
+ ],
+ );
+ } else if (invites_left === -1 || invites_left === 0) {
Alert.alert(ERROR_NO_CONTACT_INVITE_LEFT);
} else {
Alert.alert(ERROR_SOMETHING_WENT_WRONG);