11import _ from 'lodash'
22import { axiosInstance as axios } from './requestInterceptor'
33import { TC_API_URL } from '../config/constants'
4+ import { RESET_PASSWORD_URL } from '../../config/constants'
45
56/**
6- * Get a user basd on it's handle/username
7- * @param {integer } handle unique identifier of the user
8- * @return {object } user returned by api
7+ * Get a user based on it's handle/username
8+ *
9+ * @param {String } handle user handle
10+ *
11+ * @returns {Promise<Object> } user profile data
912 */
1013export function getUserProfile ( handle ) {
1114 return axios . get ( `${ TC_API_URL } /v3/members/${ handle } /` )
1215 . then ( resp => {
1316 return _ . get ( resp . data , 'result.content' , { } )
1417 } )
1518}
19+
20+ /**
21+ * Update user profile
22+ *
23+ * @param {String } handle user handle
24+ * @param {Object } updatedProfile updated user data
25+ *
26+ * @returns {Promise<Object> } user profile data
27+ */
28+ export function updateUserProfile ( handle , updatedProfile ) {
29+ return axios . put ( `${ TC_API_URL } /v3/members/${ handle } /` , {
30+ param : updatedProfile
31+ } )
32+ . then ( resp => {
33+ return _ . get ( resp . data , 'result.content' , { } )
34+ } )
35+ }
36+
37+ /**
38+ * Get member traits
39+ *
40+ * @param {String } handle member handle
41+ *
42+ * @returns {Promise<Array> } member traits
43+ */
44+ export const getMemberTraits = ( handle ) => {
45+ return axios . get ( `${ TC_API_URL } /v3/members/${ handle } /traits` )
46+ . then ( resp => _ . get ( resp . data , 'result.content' , { } ) )
47+ }
48+
49+ /**
50+ * Update member traits
51+ *
52+ * @param {String } handle member handle
53+ * @param {Array } updatedTraits list of updated traits
54+ *
55+ * @returns {Promise<Array> } member traits
56+ */
57+ export const updateMemberTraits = ( handle , updatedTraits ) => {
58+ return axios . put ( `${ TC_API_URL } /v3/members/${ handle } /traits` , {
59+ param : updatedTraits
60+ } )
61+ . then ( resp => _ . get ( resp . data , 'result.content' , { } ) )
62+ }
63+
64+ /**
65+ * Update member photo
66+ *
67+ * @param {String } handle member handle
68+ * @param {Object } data params to update photo
69+ * @param {String } data.contentType photo file content type
70+ * @param {String } data.token token provided by pre signed URL
71+ *
72+ * @returns {Promise<String> } photo URL
73+ */
74+ export const updateMemberPhoto = ( handle , data ) => {
75+ return axios . put ( `${ TC_API_URL } /v3/members/${ handle } /photo` , {
76+ param : data
77+ } )
78+ . then ( resp => _ . get ( resp . data , 'result.content' , { } ) )
79+ }
80+
81+ /**
82+ * Get pre-signed URL for member photo
83+ *
84+ * @param {String } handle member handle
85+ * @param {File } file file to upload
86+ *
87+ * @returns {Promise<Object> } data of pre-signed URL
88+ */
89+ export const getPreSignedUrl = ( handle , file ) => {
90+ return axios . post ( `${ TC_API_URL } /v3/members/${ handle } /photoUploadUrl` , {
91+ param : {
92+ contentType : file . type
93+ }
94+ } )
95+ . then ( resp => _ . get ( resp . data , 'result.content' , { } ) )
96+ }
97+
98+ /**
99+ * Check if email is available to be used for a user
100+ *
101+ * @param {String } email email to validate
102+ *
103+ * @returns {Promise<Object> } response body
104+ */
105+ export const checkEmailValidity = ( email ) => {
106+ return axios . get ( `${ TC_API_URL } /v3/users/validateEmail?email=${ email } ` )
107+ . then ( resp => _ . get ( resp . data , 'result.content' , { } ) )
108+ }
109+
110+ /**
111+ * Update user password
112+ *
113+ * @param {Number } userId user id
114+ * @param {Object } credential user credentials old and new one
115+ *
116+ * @returns {Promise<Object> } response body
117+ */
118+ export const updatePassword = ( userId , credential ) => {
119+ return axios . patch ( `${ TC_API_URL } /v3/users/${ userId } ` , {
120+ param : { credential }
121+ } )
122+ . then ( resp => _ . get ( resp . data , 'result.content' , { } ) )
123+ }
124+
125+ /**
126+ * Send reset password email to the user
127+ *
128+ * @param {String } email user email
129+ *
130+ * @returns {Promise<Object> } response body
131+ */
132+ export const resetPassword = ( email ) => {
133+ return axios . get ( `${ TC_API_URL } /v3/users/resetToken?email=${ encodeURIComponent ( email ) } &resetPasswordUrlPrefix=${ encodeURIComponent ( RESET_PASSWORD_URL ) } ` )
134+ . then ( resp => _ . get ( resp . data , 'result.content' , { } ) )
135+ }
0 commit comments