aboutsummaryrefslogtreecommitdiff
path: root/src/services/SuggestedPeopleService.ts
blob: aa1fabdea41c156601b3f0e4e623eb7ecc9e06a6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
import AsyncStorage from '@react-native-community/async-storage';
import {
  EDIT_PROFILE_ENDPOINT,
  SP_UPDATE_PICTURE_ENDPOINT,
  SP_USERS_ENDPOINT,
} from '../constants';
import {SuggestedPeopleDataType} from '../types';

export const sendSuggestedPeopleLinked = async (
  userId: string,
  suggested_people_linked: number,
) => {
  try {
    const request = new FormData();
    request.append('suggested_people_linked', suggested_people_linked);
    const endpoint = EDIT_PROFILE_ENDPOINT + `${userId}/`;
    const token = await AsyncStorage.getItem('token');
    let response = await fetch(endpoint, {
      method: 'PATCH',
      headers: {
        'Content-Type': 'multipart/form-data',
        Authorization: 'Token ' + token,
      },
      body: request,
    });
    return response.status === 200;
  } catch (error) {
    console.log('Error updating animated tutorial close button press');
    return false;
  }
};

export const sendSuggestedPeoplePhoto = async (photoUri: string) => {
  try {
    const token = await AsyncStorage.getItem('token');
    const form = new FormData();
    form.append('suggested_people', {
      uri: photoUri,
      name: 'sp_photo.jpg',
      type: 'image/jpg',
    });
    const response = await fetch(SP_UPDATE_PICTURE_ENDPOINT, {
      method: 'POST',
      headers: {
        'Content-Type': 'multipart/form-data',
        Authorization: 'Token ' + token,
      },
      body: form,
    });
    return response.status === 201;
  } catch (error) {
    console.log('Error uploading SP photo');
    return false;
  }
};

export const getSuggestedPeople = async (limit: number, offset: number) => {
  try {
    const token = await AsyncStorage.getItem('token');
    const url = `${SP_USERS_ENDPOINT}?limit=${limit}&offset=${offset}`;
    const response = await fetch(url, {
      method: 'GET',
      headers: {
        Authorization: 'Token ' + token,
      },
    });
    if (response.status !== 200) {
      throw 'Non-200 response';
    }
    const data = await response.json();
    const typedData: SuggestedPeopleDataType[] = data.results;
    return typedData;
  } catch (error) {
    console.log('Error fetching SP user data');
    console.log(error);
    return [];
  }
};

export const getSuggestedPeopleProfile = async (userId: string) => {
  try {
    const token = await AsyncStorage.getItem('token');
    const response = await fetch(SP_USERS_ENDPOINT + userId + '/', {
      method: 'GET',
      headers: {
        Authorization: 'Token ' + token,
      },
    });
    if (response.status === 200) {
      const data: SuggestedPeopleDataType = await response.json();
      return data;
    } else {
      return undefined;
    }
  } catch (error) {
    console.log('Error retrieving SP info');
    return undefined;
  }
};