aboutsummaryrefslogtreecommitdiff
path: root/src/services/UserProfileService.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/services/UserProfileService.ts')
-rw-r--r--src/services/UserProfileService.ts121
1 files changed, 121 insertions, 0 deletions
diff --git a/src/services/UserProfileService.ts b/src/services/UserProfileService.ts
new file mode 100644
index 00000000..4c3af06a
--- /dev/null
+++ b/src/services/UserProfileService.ts
@@ -0,0 +1,121 @@
+//Abstracted common profile api calls out here
+
+import {Alert} from 'react-native';
+import {
+ PROFILE_INFO_ENDPOINT,
+ AVATAR_PHOTO_ENDPOINT,
+ COVER_PHOTO_ENDPOINT,
+ GET_IG_POSTS_ENDPOINT,
+} from '../constants';
+
+import AsyncStorage from '@react-native-community/async-storage';
+import RNFetchBlob from 'rn-fetch-blob';
+
+export const loadProfileInfo = async (
+ token: string,
+ userId: string,
+ callback: Function,
+) => {
+ try {
+ const response = await fetch(PROFILE_INFO_ENDPOINT + `${userId}/`, {
+ method: 'GET',
+ headers: {
+ Authorization: 'Token ' + token,
+ },
+ });
+ const status = response.status;
+ if (status === 200) {
+ const info = await response.json();
+ let {name, biography, website} = info;
+ callback({name, biography, website});
+ }
+ } catch (error) {
+ Alert.alert(
+ 'Something went wrong! 😭',
+ "Would you believe me if I told you that I don't know what happened?",
+ );
+ }
+};
+
+export const loadAvatar = async (
+ token: string,
+ userId: string,
+ callback: Function,
+) => {
+ try {
+ const response = await RNFetchBlob.config({
+ fileCache: true,
+ appendExt: 'jpg',
+ }).fetch('GET', AVATAR_PHOTO_ENDPOINT + `${userId}/`, {
+ Authorization: 'Token ' + token,
+ });
+ const status = response.info().status;
+ if (status === 200) {
+ callback(response.path());
+ } else {
+ callback('');
+ }
+ } catch (error) {
+ console.log(error);
+ }
+};
+
+export const loadCover = async (
+ token: string,
+ userId: string,
+ callback: Function,
+) => {
+ try {
+ let response = await RNFetchBlob.config({
+ fileCache: true,
+ appendExt: 'jpg',
+ }).fetch('GET', COVER_PHOTO_ENDPOINT + `${userId}/`, {
+ Authorization: 'Token ' + token,
+ });
+ const status = response.info().status;
+ if (status === 200) {
+ callback(response.path());
+ } else {
+ callback('');
+ }
+ } catch (error) {
+ console.log(error);
+ }
+};
+
+export const loadInstaPosts = async (
+ token: string,
+ userId: string,
+ callback: Function,
+) => {
+ try {
+ const response = await fetch(GET_IG_POSTS_ENDPOINT + `${userId}/`, {
+ method: 'GET',
+ headers: {
+ Authorization: 'Token ' + token,
+ },
+ });
+ const status = response.status;
+ if (status === 200) {
+ let ig_posts = await response.json();
+ callback(ig_posts);
+ } else {
+ callback([]);
+ }
+ } catch (error) {
+ console.log(error);
+ Alert.alert(
+ 'Something went wrong! 😭',
+ "Would you believe me if I told you that I don't know what happened?",
+ );
+ }
+};
+
+export const loadRecentlySearchedUsers = async (callback: Function) => {
+ try {
+ const asyncCache = await AsyncStorage.getItem('@recently_searched_users');
+ asyncCache != null ? callback(JSON.parse(asyncCache)) : null;
+ } catch (e) {
+ console.log(e);
+ }
+};