From 1080adb75c18f6da6b91be4264c69a9bf908ff0d Mon Sep 17 00:00:00 2001 From: Shravya Ramesh Date: Thu, 18 Mar 2021 02:06:02 -0700 Subject: works --- src/components/profile/Friends.tsx | 162 +++++++++++++++++++++++++++++++++---- 1 file changed, 146 insertions(+), 16 deletions(-) (limited to 'src/components/profile') diff --git a/src/components/profile/Friends.tsx b/src/components/profile/Friends.tsx index 7c7265c5..a1030b49 100644 --- a/src/components/profile/Friends.tsx +++ b/src/components/profile/Friends.tsx @@ -1,14 +1,18 @@ -import React from 'react'; -import {View, StyleSheet, ScrollView, Text} from 'react-native'; -import {ProfilePreviewType, ScreenType} from '../../types'; -import {ProfilePreview} from '../profile'; -import {normalize, SCREEN_HEIGHT, SCREEN_WIDTH} from '../../utils'; +import {useNavigation} from '@react-navigation/native'; +import React, {useEffect, useState} from 'react'; +import {ScrollView, StyleSheet, Text, View} from 'react-native'; +import {checkPermission, getAll} from 'react-native-contacts'; +import {TouchableOpacity} from 'react-native-gesture-handler'; +import {useDispatch, useSelector, useStore} from 'react-redux'; import {TAGG_LIGHT_BLUE} from '../../constants'; -import {RootState} from '../../store/rootReducer'; -import {useDispatch, useStore} from 'react-redux'; -import {handleUnfriend} from '../../utils/friends'; +import {usersFromContactsService} from '../../services'; import {NO_USER} from '../../store/initialStates'; -import {TouchableOpacity} from 'react-native-gesture-handler'; +import {RootState} from '../../store/rootReducer'; +import {ProfilePreviewType, ScreenType} from '../../types'; +import {normalize, SCREEN_HEIGHT, SCREEN_WIDTH} from '../../utils'; +import {handleAddFriend, handleUnfriend} from '../../utils/friends'; +import {ProfilePreview} from '../profile'; +import FindFriendsBlueIcon from '../../assets/icons/findFriends/find-friends-blue-icon.svg'; interface FriendsProps { result: Array; @@ -17,16 +21,102 @@ interface FriendsProps { } const Friends: React.FC = ({result, screenType, userId}) => { - const state: RootState = useStore().getState(); const dispatch = useDispatch(); + const navigation = useNavigation(); + const {user: loggedInUser = NO_USER} = useSelector( + (state: RootState) => state.user, + ); + const state = useStore().getState(); + const [usersFromContacts, setUsersFromContacts] = useState< + ProfilePreviewType[] + >([]); + + const extractPhoneNumbers = async () => { + let phoneNumbers: Array = []; + await getAll().then((contacts) => { + contacts.map((contact) => { + contact.phoneNumbers.map(async (phoneNumber) => { + phoneNumbers.push(await phoneNumber.number); + }); + }); + }); + return phoneNumbers; + }; - const {user: loggedInUser = NO_USER} = state; + useEffect(() => { + const handleFindFriends = () => { + extractPhoneNumbers().then(async (phoneNumbers) => { + const permission = await checkPermission(); + if (permission === 'authorized') { + let response = await usersFromContactsService(phoneNumbers); + await setUsersFromContacts(response.existing_tagg_users); + usersFromContacts.map((user) => console.log('user: ', user.username)); + } else if (permission === 'undefined') { + navigation.navigate('RequestContactsAccess'); + } else { + console.log('Go to settings'); + } + }); + }; + handleFindFriends(); + }, []); + + const UsersFromContacts = () => ( + <> + {usersFromContacts?.splice(0, 2).map((profilePreview) => ( + + + + + { + console.log('screentype: ', screenType); + handleAddFriend(screenType, profilePreview, dispatch, state).then( + (success) => { + if (success) { + let users = usersFromContacts; + setUsersFromContacts( + users.filter( + (user) => user.username !== profilePreview.username, + ), + ); + } + }, + ); + }}> + Add Friend + + + ))} + + ); return ( <> - {/* Friends */} + + Add Friends + + navigation.navigate('InviteFriendsScreen', { + screenType: ScreenType.Profile, + }) + }> + + Find Friends + + + + + Friends + = ({result, screenType, userId}) => { screenType={screenType} /> - {loggedInUser.userId === userId && ( + {loggedInUser.userId !== userId && ( @@ -63,12 +153,19 @@ const styles = StyleSheet.create({ alignSelf: 'center', width: SCREEN_WIDTH * 0.85, }, + firstScrollView: {}, scrollViewContent: { alignSelf: 'center', paddingBottom: SCREEN_HEIGHT / 7, width: SCREEN_WIDTH * 0.85, marginTop: '1%', }, + addFriendHeaderContainer: { + flexDirection: 'row', + justifyContent: 'space-between', + marginBottom: '3%', + marginTop: '2%', + }, header: {flexDirection: 'row'}, subheader: { alignSelf: 'center', @@ -81,6 +178,18 @@ const styles = StyleSheet.create({ fontWeight: '600', lineHeight: normalize(14.32), }, + friendsSubheaderText: { + alignSelf: 'center', + width: SCREEN_WIDTH * 0.85, + marginVertical: '1%', + marginBottom: '2%', + }, + findFriendsSubheaderText: { + color: '#08E2E2', + fontSize: normalize(12), + fontWeight: '600', + lineHeight: normalize(14.32), + }, container: { alignSelf: 'center', flexDirection: 'row', @@ -94,7 +203,7 @@ const styles = StyleSheet.create({ alignSelf: 'center', height: '100%', }, - button: { + addFriendButton: { alignSelf: 'center', justifyContent: 'center', alignItems: 'center', @@ -104,10 +213,31 @@ const styles = StyleSheet.create({ borderWidth: 2, borderRadius: 2, padding: 0, - backgroundColor: 'transparent', + 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%', + }, + button: { + alignSelf: 'center', + justifyContent: 'center', + alignItems: 'center', + width: 82, + height: '55%', + borderColor: TAGG_LIGHT_BLUE, + borderWidth: 2, + borderRadius: 2, + padding: 0, + backgroundColor: TAGG_LIGHT_BLUE, }, buttonTitle: { - color: TAGG_LIGHT_BLUE, + color: 'white', padding: 0, fontSize: normalize(11), fontWeight: '700', -- cgit v1.2.3-70-g09d2 From fe5ff5ec516302811b7323cadf8e3dd0939beea4 Mon Sep 17 00:00:00 2001 From: Shravya Ramesh Date: Thu, 18 Mar 2021 02:45:46 -0700 Subject: services + --- src/components/profile/Friends.tsx | 37 +++++++++------- src/screens/profile/InviteFriendsScreen.tsx | 21 ++++++--- src/services/UserFriendsService.ts | 67 ++++++++++++++++++++++++++++- src/types/types.ts | 6 +++ src/utils/friends.ts | 2 +- 5 files changed, 107 insertions(+), 26 deletions(-) (limited to 'src/components/profile') diff --git a/src/components/profile/Friends.tsx b/src/components/profile/Friends.tsx index a1030b49..36e0ef8a 100644 --- a/src/components/profile/Friends.tsx +++ b/src/components/profile/Friends.tsx @@ -98,22 +98,27 @@ const Friends: React.FC = ({result, screenType, userId}) => { return ( <> - - - Add Friends - - navigation.navigate('InviteFriendsScreen', { - screenType: ScreenType.Profile, - }) - }> - - Find Friends - - - - + {loggedInUser.userId === userId || + (userId === undefined && ( + + + Add Friends + + navigation.navigate('InviteFriendsScreen', { + screenType: ScreenType.Profile, + }) + }> + + + Find Friends + + + + + + ))} Friends diff --git a/src/screens/profile/InviteFriendsScreen.tsx b/src/screens/profile/InviteFriendsScreen.tsx index 8fc12a5e..1a5de1ce 100644 --- a/src/screens/profile/InviteFriendsScreen.tsx +++ b/src/screens/profile/InviteFriendsScreen.tsx @@ -13,7 +13,7 @@ import { TouchableWithoutFeedback, } from 'react-native'; import {useDispatch, useStore} from 'react-redux'; -import {ProfilePreviewType, ScreenType} from '../../types'; +import {ContactType, ProfilePreviewType, ScreenType} from '../../types'; import { handleAddFriend, HeaderHeight, @@ -53,24 +53,30 @@ const InviteFriendsScreen: React.FC = ({ }); const [query, setQuery] = useState(''); - const extractPhoneNumbers = async () => { - let phoneNumbers: Array = []; + const extractContacts = async () => { + let retrievedContacts: Array = []; await getAll().then((contacts) => { contacts.map((contact) => { + let obj: ContactType = { + first_name: contact.givenName, + last_name: contact.familyName, + }; contact.phoneNumbers.map(async (phoneNumber) => { - phoneNumbers.push(await phoneNumber.number); + obj.phone_number = phoneNumber.number; + retrievedContacts.push(obj); + console.log('contact: ', obj); }); }); }); - return phoneNumbers; + return retrievedContacts; }; useEffect(() => { const handleFindFriends = () => { - extractPhoneNumbers().then(async (phoneNumbers) => { + extractContacts().then(async (retrievedContacts) => { const permission = await checkPermission(); if (permission === 'authorized') { - let response = await usersFromContactsService(phoneNumbers); + let response = await usersFromContactsService(retrievedContacts); await setUsersFromContacts(response.existing_tagg_users); await setNonUsersFromContacts(response.invite_from_contacts); usersFromContacts.map((user) => console.log('user: ', user.username)); @@ -169,6 +175,7 @@ const InviteFriendsScreen: React.FC = ({ const NonUsersFromContacts = () => ( <> item.phoneNumber} diff --git a/src/services/UserFriendsService.ts b/src/services/UserFriendsService.ts index dbec1974..86339868 100644 --- a/src/services/UserFriendsService.ts +++ b/src/services/UserFriendsService.ts @@ -1,8 +1,13 @@ //Abstracted common friends api calls out here +import AsyncStorage from '@react-native-community/async-storage'; import {Alert} from 'react-native'; -import {FriendshipStatusType} from '../types'; -import {FRIENDS_ENDPOINT} from '../constants'; +import {ContactType, FriendshipStatusType} from '../types'; +import { + FRIENDS_ENDPOINT, + INVITE_FRIEND_ENDPOINT, + USERS_FROM_CONTACTS_ENDPOINT, +} from '../constants'; import {ERROR_SOMETHING_WENT_WRONG_REFRESH} from '../constants/strings'; export const loadFriends = async (userId: string, token: string) => { @@ -181,3 +186,61 @@ export const deleteFriendshipService = async ( return false; } }; + +export const usersFromContactsService = async ( + contacts: Array, +) => { + console.log('Contacts: ', contacts); + try { + const token = await AsyncStorage.getItem('token'); + const response = await fetch(USERS_FROM_CONTACTS_ENDPOINT, { + method: 'POST', + headers: { + Authorization: 'Token ' + token, + }, + body: JSON.stringify({ + contacts: contacts, + }), + }); + const status = response.status; + if (Math.floor(status / 100) === 2) { + const users_data = await response.json(); + return users_data; + } else { + console.log( + 'Something went wrong! 😭', + 'Not able to retrieve tagg users list', + ); + } + } catch (error) { + console.log(error); + Alert.alert(ERROR_SOMETHING_WENT_WRONG_REFRESH); + return false; + } +}; + +export const inviteFriendService = async ( + phoneNumber: string, + inviteeFirstName: string, + inviteeLastName: string, + inviterFullName: string, +) => { + const token = await AsyncStorage.getItem('token'); + const response = await fetch(INVITE_FRIEND_ENDPOINT, { + method: 'POST', + headers: { + Authorization: 'Token ' + token, + }, + body: JSON.stringify({ + phone_number: phoneNumber, + invitee_first_name: inviteeFirstName, + invitee_last_name: inviteeLastName, + inviter_full_name: inviterFullName, + }), + }); + if (response.status === 201) { + const response_body = await response.json(); + return response_body; + } + return false; +}; diff --git a/src/types/types.ts b/src/types/types.ts index e068eeba..dc2817bd 100644 --- a/src/types/types.ts +++ b/src/types/types.ts @@ -256,3 +256,9 @@ export type SearchCategoryType = { name: string; category: string; }; + +export type ContactType = { + phone_number: string; + first_name: string; + last_name: string; +}; diff --git a/src/utils/friends.ts b/src/utils/friends.ts index 3398c123..55d65170 100644 --- a/src/utils/friends.ts +++ b/src/utils/friends.ts @@ -60,7 +60,7 @@ export const handleAddFriend = async ( dispatch: AppDispatch, state: RootState, ) => { - const success = await dispatch(addFriend(friend, screenType)); + const success = await dispatch(addFriend(friend, screenType, state)); await dispatch(updateUserXFriends(friend.id, state)); await dispatch(updateUserXProfileAllScreens(friend.id, state)); return success; -- cgit v1.2.3-70-g09d2 From f81a4e1a05ca3fa66c2798b047d4bfd6995f462d Mon Sep 17 00:00:00 2001 From: Shravya Ramesh Date: Thu, 18 Mar 2021 13:44:19 -0700 Subject: Support modified endpoints + refactoring --- src/components/friends/InviteFriendTile.tsx | 2 -- src/components/profile/Friends.tsx | 23 ++++++++------------- src/screens/profile/InviteFriendsScreen.tsx | 32 +++++++++-------------------- src/services/UserFriendsService.ts | 10 +++++---- src/utils/common.ts | 21 ++++++++++++++++++- 5 files changed, 44 insertions(+), 44 deletions(-) (limited to 'src/components/profile') diff --git a/src/components/friends/InviteFriendTile.tsx b/src/components/friends/InviteFriendTile.tsx index c49792f9..f56d3514 100644 --- a/src/components/friends/InviteFriendTile.tsx +++ b/src/components/friends/InviteFriendTile.tsx @@ -19,13 +19,11 @@ interface InviteFriendTileProps { const InviteFriendTile: React.FC = ({item}) => { const [invited, setInvited] = useState(false); const [formatedPhoneNumber, setFormattedPhoneNumber] = useState(''); - const {profile} = useSelector((state: RootState) => state.user); const handleInviteFriend = async () => { const response = await inviteFriendService( item.phoneNumber, item.firstName, item.lastName, - profile.name, ); if (response) { setInvited(response); diff --git a/src/components/profile/Friends.tsx b/src/components/profile/Friends.tsx index 36e0ef8a..7d57177c 100644 --- a/src/components/profile/Friends.tsx +++ b/src/components/profile/Friends.tsx @@ -9,7 +9,12 @@ import {usersFromContactsService} from '../../services'; import {NO_USER} from '../../store/initialStates'; import {RootState} from '../../store/rootReducer'; import {ProfilePreviewType, ScreenType} from '../../types'; -import {normalize, SCREEN_HEIGHT, SCREEN_WIDTH} from '../../utils'; +import { + extractContacts, + normalize, + SCREEN_HEIGHT, + SCREEN_WIDTH, +} from '../../utils'; import {handleAddFriend, handleUnfriend} from '../../utils/friends'; import {ProfilePreview} from '../profile'; import FindFriendsBlueIcon from '../../assets/icons/findFriends/find-friends-blue-icon.svg'; @@ -31,24 +36,12 @@ const Friends: React.FC = ({result, screenType, userId}) => { ProfilePreviewType[] >([]); - const extractPhoneNumbers = async () => { - let phoneNumbers: Array = []; - await getAll().then((contacts) => { - contacts.map((contact) => { - contact.phoneNumbers.map(async (phoneNumber) => { - phoneNumbers.push(await phoneNumber.number); - }); - }); - }); - return phoneNumbers; - }; - useEffect(() => { const handleFindFriends = () => { - extractPhoneNumbers().then(async (phoneNumbers) => { + extractContacts().then(async (contacts) => { const permission = await checkPermission(); if (permission === 'authorized') { - let response = await usersFromContactsService(phoneNumbers); + let response = await usersFromContactsService(contacts); await setUsersFromContacts(response.existing_tagg_users); usersFromContacts.map((user) => console.log('user: ', user.username)); } else if (permission === 'undefined') { diff --git a/src/screens/profile/InviteFriendsScreen.tsx b/src/screens/profile/InviteFriendsScreen.tsx index 1a5de1ce..53215d8a 100644 --- a/src/screens/profile/InviteFriendsScreen.tsx +++ b/src/screens/profile/InviteFriendsScreen.tsx @@ -15,6 +15,7 @@ import { import {useDispatch, useStore} from 'react-redux'; import {ContactType, ProfilePreviewType, ScreenType} from '../../types'; import { + extractContacts, handleAddFriend, HeaderHeight, normalize, @@ -53,24 +54,6 @@ const InviteFriendsScreen: React.FC = ({ }); const [query, setQuery] = useState(''); - const extractContacts = async () => { - let retrievedContacts: Array = []; - await getAll().then((contacts) => { - contacts.map((contact) => { - let obj: ContactType = { - first_name: contact.givenName, - last_name: contact.familyName, - }; - contact.phoneNumbers.map(async (phoneNumber) => { - obj.phone_number = phoneNumber.number; - retrievedContacts.push(obj); - console.log('contact: ', obj); - }); - }); - }); - return retrievedContacts; - }; - useEffect(() => { const handleFindFriends = () => { extractContacts().then(async (retrievedContacts) => { @@ -190,7 +173,13 @@ const InviteFriendsScreen: React.FC = ({ - + Sharing is caring, invite friends, and create moments together! @@ -224,9 +213,7 @@ const InviteFriendsScreen: React.FC = ({ - - Add Friends - + Add Friends @@ -257,6 +244,7 @@ const styles = StyleSheet.create({ fontSize: normalize(12), fontWeight: '600', lineHeight: normalize(14.32), + marginBottom: '5%', }, container: { alignSelf: 'center', diff --git a/src/services/UserFriendsService.ts b/src/services/UserFriendsService.ts index 86339868..c6679bef 100644 --- a/src/services/UserFriendsService.ts +++ b/src/services/UserFriendsService.ts @@ -8,7 +8,10 @@ import { INVITE_FRIEND_ENDPOINT, USERS_FROM_CONTACTS_ENDPOINT, } from '../constants'; -import {ERROR_SOMETHING_WENT_WRONG_REFRESH} from '../constants/strings'; +import { + ERROR_SOMETHING_WENT_WRONG, + ERROR_SOMETHING_WENT_WRONG_REFRESH, +} from '../constants/strings'; export const loadFriends = async (userId: string, token: string) => { try { @@ -223,7 +226,6 @@ export const inviteFriendService = async ( phoneNumber: string, inviteeFirstName: string, inviteeLastName: string, - inviterFullName: string, ) => { const token = await AsyncStorage.getItem('token'); const response = await fetch(INVITE_FRIEND_ENDPOINT, { @@ -232,15 +234,15 @@ export const inviteFriendService = async ( Authorization: 'Token ' + token, }, body: JSON.stringify({ - phone_number: phoneNumber, + invitee_phone_number: phoneNumber, invitee_first_name: inviteeFirstName, invitee_last_name: inviteeLastName, - inviter_full_name: inviterFullName, }), }); if (response.status === 201) { const response_body = await response.json(); return response_body; } + Alert.alert(ERROR_SOMETHING_WENT_WRONG); return false; }; diff --git a/src/utils/common.ts b/src/utils/common.ts index c1049c42..5f0e26ba 100644 --- a/src/utils/common.ts +++ b/src/utils/common.ts @@ -1,8 +1,9 @@ -import {NotificationType} from './../types/types'; +import {ContactType, NotificationType} from './../types/types'; import moment from 'moment'; import {Linking} from 'react-native'; import {BROWSABLE_SOCIAL_URLS, TOGGLE_BUTTON_TYPE} from '../constants'; import AsyncStorage from '@react-native-community/async-storage'; +import {getAll} from 'react-native-contacts'; export const getToggleButtonText: ( buttonType: string, @@ -115,3 +116,21 @@ export const shuffle = (array: any[]) => { return array; }; + +export const extractContacts = async () => { + let retrievedContacts: Array = []; + await getAll().then((contacts) => { + contacts.map((contact) => { + let obj: ContactType = { + first_name: contact.givenName, + last_name: contact.familyName, + }; + contact.phoneNumbers.map(async (phoneNumber) => { + obj.phone_number = phoneNumber.number; + retrievedContacts.push(obj); + console.log('contact: ', obj); + }); + }); + }); + return retrievedContacts; +}; -- cgit v1.2.3-70-g09d2 From 8d243eef5db576c053d521d082feb87a1a834558 Mon Sep 17 00:00:00 2001 From: Shravya Ramesh Date: Thu, 18 Mar 2021 15:23:18 -0700 Subject: cleaned lint erros --- src/components/friends/InviteFriendTile.tsx | 30 ++++++++++++--------------- src/components/profile/Friends.tsx | 5 +++-- src/screens/profile/InviteFriendsScreen.tsx | 32 ++++++++++++++++++----------- 3 files changed, 36 insertions(+), 31 deletions(-) (limited to 'src/components/profile') diff --git a/src/components/friends/InviteFriendTile.tsx b/src/components/friends/InviteFriendTile.tsx index f56d3514..9613b1ac 100644 --- a/src/components/friends/InviteFriendTile.tsx +++ b/src/components/friends/InviteFriendTile.tsx @@ -6,8 +6,6 @@ import { TouchableWithoutFeedback, View, } from 'react-native'; -import {useSelector} from 'react-redux'; -import {RootState} from '../../store/rootReducer'; import {TAGG_LIGHT_BLUE} from '../../constants'; import {inviteFriendService} from '../../services'; import {normalize} from '../../utils'; @@ -48,24 +46,11 @@ const InviteFriendTile: React.FC = ({item}) => { return ( - + {item.firstName + ' ' + item.lastName} - - {formatedPhoneNumber} - + {formatedPhoneNumber} = ({result, screenType, userId}) => { Add Friends navigation.navigate('InviteFriendsScreen', { screenType: ScreenType.Profile, @@ -176,6 +176,7 @@ const styles = StyleSheet.create({ fontWeight: '600', lineHeight: normalize(14.32), }, + findFriendsButton: {flexDirection: 'row'}, friendsSubheaderText: { alignSelf: 'center', width: SCREEN_WIDTH * 0.85, diff --git a/src/screens/profile/InviteFriendsScreen.tsx b/src/screens/profile/InviteFriendsScreen.tsx index 53215d8a..c98b90f8 100644 --- a/src/screens/profile/InviteFriendsScreen.tsx +++ b/src/screens/profile/InviteFriendsScreen.tsx @@ -13,7 +13,7 @@ import { TouchableWithoutFeedback, } from 'react-native'; import {useDispatch, useStore} from 'react-redux'; -import {ContactType, ProfilePreviewType, ScreenType} from '../../types'; +import {ProfilePreviewType, ScreenType} from '../../types'; import { extractContacts, handleAddFriend, @@ -22,7 +22,7 @@ import { SCREEN_HEIGHT, SCREEN_WIDTH, } from '../../utils'; -import {checkPermission, getAll} from 'react-native-contacts'; +import {checkPermission} from 'react-native-contacts'; import {usersFromContactsService} from '../../services/UserFriendsService'; import {ProfilePreview, TabsGradient} from '../../components'; import Animated from 'react-native-reanimated'; @@ -158,7 +158,7 @@ const InviteFriendsScreen: React.FC = ({ const NonUsersFromContacts = () => ( <> item.phoneNumber} @@ -168,19 +168,13 @@ const InviteFriendsScreen: React.FC = ({ ); return ( - + - - + + Sharing is caring, invite friends, and create moments together! @@ -229,11 +223,25 @@ const InviteFriendsScreen: React.FC = ({ }; const styles = StyleSheet.create({ + mainContainer: {backgroundColor: 'white', height: SCREEN_HEIGHT}, body: { paddingTop: HeaderHeight * 1.3, height: SCREEN_HEIGHT * 0.8, backgroundColor: '#fff', }, + headerContainer: { + width: 319, + height: 42, + alignSelf: 'center', + marginBottom: '2%', + }, + headerText: { + alignSelf: 'center', + width: SCREEN_WIDTH * 0.85, + marginBottom: '5%', + textAlign: 'center', + }, + nonUsersFlatListContainer: {paddingBottom: 130}, subheader: { alignSelf: 'center', width: SCREEN_WIDTH * 0.85, -- cgit v1.2.3-70-g09d2 From b1c88afecd72864fe928882fc64c767dc58076fe Mon Sep 17 00:00:00 2001 From: Shravya Ramesh Date: Thu, 18 Mar 2021 16:00:33 -0700 Subject: open settings --- src/components/profile/Friends.tsx | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) (limited to 'src/components/profile') diff --git a/src/components/profile/Friends.tsx b/src/components/profile/Friends.tsx index 1c295c25..62ae2b48 100644 --- a/src/components/profile/Friends.tsx +++ b/src/components/profile/Friends.tsx @@ -1,6 +1,6 @@ import {useNavigation} from '@react-navigation/native'; import React, {useEffect, useState} from 'react'; -import {ScrollView, StyleSheet, Text, View} from 'react-native'; +import {Linking, ScrollView, StyleSheet, Text, View} from 'react-native'; import {checkPermission} from 'react-native-contacts'; import {TouchableOpacity} from 'react-native-gesture-handler'; import {useDispatch, useSelector, useStore} from 'react-redux'; @@ -43,11 +43,8 @@ const Friends: React.FC = ({result, screenType, userId}) => { if (permission === 'authorized') { let response = await usersFromContactsService(contacts); await setUsersFromContacts(response.existing_tagg_users); - usersFromContacts.map((user) => console.log('user: ', user.username)); - } else if (permission === 'undefined') { - navigation.navigate('RequestContactsAccess'); } else { - console.log('Go to settings'); + console.log('Authorize access to contacts'); } }); }; @@ -98,11 +95,16 @@ const Friends: React.FC = ({result, screenType, userId}) => { Add Friends - navigation.navigate('InviteFriendsScreen', { - screenType: ScreenType.Profile, - }) - }> + onPress={async () => { + const permission = await checkPermission(); + if (permission === 'authorized') { + navigation.navigate('InviteFriendsScreen', { + screenType: ScreenType.Profile, + }); + } else { + Linking.openSettings(); + } + }}> Find Friends -- cgit v1.2.3-70-g09d2 From 5c3543494cdc2f164563bff70dbb25398b0cab5c Mon Sep 17 00:00:00 2001 From: Shravya Ramesh Date: Thu, 18 Mar 2021 16:15:51 -0700 Subject: alert requesting access to contacts --- src/components/profile/Friends.tsx | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'src/components/profile') diff --git a/src/components/profile/Friends.tsx b/src/components/profile/Friends.tsx index 62ae2b48..1c205ce6 100644 --- a/src/components/profile/Friends.tsx +++ b/src/components/profile/Friends.tsx @@ -1,6 +1,6 @@ import {useNavigation} from '@react-navigation/native'; import React, {useEffect, useState} from 'react'; -import {Linking, ScrollView, StyleSheet, Text, View} from 'react-native'; +import {Alert, Linking, ScrollView, StyleSheet, Text, View} from 'react-native'; import {checkPermission} from 'react-native-contacts'; import {TouchableOpacity} from 'react-native-gesture-handler'; import {useDispatch, useSelector, useStore} from 'react-redux'; @@ -102,7 +102,17 @@ const Friends: React.FC = ({result, screenType, userId}) => { screenType: ScreenType.Profile, }); } else { - Linking.openSettings(); + Alert.alert( + '"Tagg" Would Like to Access Your Contacts', + 'This helps you quickly get in touch with friends on the app and more', + [ + { + text: "Don't Allow", + style: 'cancel', + }, + {text: 'Allow', onPress: () => Linking.openSettings()}, + ], + ); } }}> -- cgit v1.2.3-70-g09d2 From eb382c75aef71510ede1cfabfee13b96477ae6a0 Mon Sep 17 00:00:00 2001 From: Shravya Ramesh Date: Thu, 18 Mar 2021 16:16:48 -0700 Subject: style minor --- src/components/profile/Friends.tsx | 1 + 1 file changed, 1 insertion(+) (limited to 'src/components/profile') diff --git a/src/components/profile/Friends.tsx b/src/components/profile/Friends.tsx index 1c205ce6..0592def8 100644 --- a/src/components/profile/Friends.tsx +++ b/src/components/profile/Friends.tsx @@ -196,6 +196,7 @@ const styles = StyleSheet.create({ marginBottom: '2%', }, findFriendsSubheaderText: { + marginLeft: '5%', color: '#08E2E2', fontSize: normalize(12), fontWeight: '600', -- cgit v1.2.3-70-g09d2