4
4
* via API V3.
5
5
*/
6
6
import toCapitalCase from 'to-capital-case' ;
7
- import { getApiResponsePayload } from '../utils/tc' ;
8
7
import { getApi } from './api' ;
9
8
9
+ /**
10
+ * Private. Handles given response from the member's traits API.
11
+ * @param {Object } response
12
+ * @return {Promise } On success resolves to the data fetched from the API.
13
+ */
14
+ function handleApiResponse ( response ) {
15
+ if ( ! response . ok ) throw new Error ( response . statusText ) ;
16
+ return response . json ( ) ;
17
+ }
18
+
10
19
/**
11
20
* Service class.
12
21
*/
@@ -16,7 +25,7 @@ class UserTraitsService {
16
25
*/
17
26
constructor ( tokenV3 ) {
18
27
this . private = {
19
- api : getApi ( 'V3 ' , tokenV3 ) ,
28
+ api : getApi ( 'V5 ' , tokenV3 ) ,
20
29
tokenV3,
21
30
} ;
22
31
}
@@ -29,7 +38,7 @@ class UserTraitsService {
29
38
async getAllUserTraits ( handle ) {
30
39
// FIXME: Remove the .toLowerCase() when the API is fixed to ignore the case in the route params
31
40
const res = await this . private . api . get ( `/members/${ handle . toLowerCase ( ) } /traits` ) ;
32
- return getApiResponsePayload ( res ) ;
41
+ return handleApiResponse ( res ) ;
33
42
}
34
43
35
44
/**
@@ -40,18 +49,17 @@ class UserTraitsService {
40
49
* @return {Promise } Resolves to the member traits.
41
50
*/
42
51
async addUserTrait ( handle , traitId , data ) {
43
- const body = {
44
- param : [ {
52
+ const body = [ {
53
+ traitId,
54
+ categoryName : toCapitalCase ( traitId ) ,
55
+ traits : {
45
56
traitId,
46
- categoryName : toCapitalCase ( traitId ) ,
47
- traits : {
48
- data,
49
- } ,
50
- } ] ,
51
- } ;
57
+ data,
58
+ } ,
59
+ } ] ;
52
60
53
61
const res = await this . private . api . postJson ( `/members/${ handle } /traits` , body ) ;
54
- return getApiResponsePayload ( res ) ;
62
+ return handleApiResponse ( res ) ;
55
63
}
56
64
57
65
/**
@@ -62,18 +70,16 @@ class UserTraitsService {
62
70
* @return {Promise } Resolves to the member traits.
63
71
*/
64
72
async updateUserTrait ( handle , traitId , data ) {
65
- const body = {
66
- param : [ {
67
- traitId,
68
- categoryName : toCapitalCase ( traitId ) ,
69
- traits : {
70
- data,
71
- } ,
72
- } ] ,
73
- } ;
73
+ const body = [ {
74
+ traitId,
75
+ categoryName : toCapitalCase ( traitId ) ,
76
+ traits : {
77
+ data,
78
+ } ,
79
+ } ] ;
74
80
75
81
const res = await this . private . api . putJson ( `/members/${ handle } /traits` , body ) ;
76
- return getApiResponsePayload ( res ) ;
82
+ return handleApiResponse ( res ) ;
77
83
}
78
84
79
85
/**
@@ -83,8 +89,7 @@ class UserTraitsService {
83
89
* @return {Promise } Resolves to the member traits.
84
90
*/
85
91
async deleteUserTrait ( handle , traitId ) {
86
- const res = await this . private . api . delete ( `/members/${ handle } /traits?traitIds=${ traitId } ` ) ;
87
- return getApiResponsePayload ( res ) ;
92
+ await this . private . api . delete ( `/members/${ handle } /traits?traitIds=${ traitId } ` ) ;
88
93
}
89
94
}
90
95
0 commit comments