Skip to content

Commit 1b566c1

Browse files
authored
Merge pull request #67 from topcoder-platform/develop
Develop
2 parents d4315ef + dbabfda commit 1b566c1

File tree

9 files changed

+39
-36
lines changed

9 files changed

+39
-36
lines changed

__tests__/actions/__snapshots__/profile.js.snap

+1
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,7 @@ Object {
166166
},
167167
},
168168
"handle": "tcscoder",
169+
"preferences": Object {},
169170
},
170171
"type": "PROFILE/SAVE_EMAIL_PREFERENCES_DONE",
171172
}

__tests__/reducers/__snapshots__/profile.js.snap

+6-6
Original file line numberDiff line numberDiff line change
@@ -740,7 +740,7 @@ Object {
740740
"deletingPhoto": false,
741741
"deletingWebLink": false,
742742
"emailPreferences": Object {
743-
"TOPCODER_NL_DATA": true,
743+
"Dev Newsletter": true,
744744
},
745745
"externalLinks": Array [
746746
Object {
@@ -939,7 +939,7 @@ Object {
939939
"deletingPhoto": false,
940940
"deletingWebLink": false,
941941
"emailPreferences": Object {
942-
"TOPCODER_NL_DATA": true,
942+
"Dev Newsletter": true,
943943
},
944944
"externalLinks": Array [
945945
Object {
@@ -989,7 +989,7 @@ Object {
989989
"deletingPhoto": false,
990990
"deletingWebLink": false,
991991
"emailPreferences": Object {
992-
"TOPCODER_NL_DATA": true,
992+
"Dev Newsletter": true,
993993
},
994994
"externalLinks": Array [
995995
Object {
@@ -1926,7 +1926,7 @@ Object {
19261926
"deletingPhoto": false,
19271927
"deletingWebLink": false,
19281928
"emailPreferences": Object {
1929-
"TOPCODER_NL_DATA": true,
1929+
"Dev Newsletter": true,
19301930
},
19311931
"externalLinks": Array [
19321932
Object {
@@ -2125,7 +2125,7 @@ Object {
21252125
"deletingPhoto": false,
21262126
"deletingWebLink": false,
21272127
"emailPreferences": Object {
2128-
"TOPCODER_NL_DATA": true,
2128+
"Dev Newsletter": true,
21292129
},
21302130
"externalLinks": Array [
21312131
Object {
@@ -2175,7 +2175,7 @@ Object {
21752175
"deletingPhoto": false,
21762176
"deletingWebLink": false,
21772177
"emailPreferences": Object {
2178-
"TOPCODER_NL_DATA": true,
2178+
"Dev Newsletter": true,
21792179
},
21802180
"externalLinks": Array [
21812181
Object {

__tests__/reducers/profile.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ const mockActions = {
3333
deleteWebLinkInit: mockAction('DELETE_WEB_LINK_INIT'),
3434
deleteWebLinkDone: mockAction('DELETE_WEB_LINK_DONE', { handle, data: webLink }),
3535
saveEmailPreferencesInit: mockAction('SAVE_EMAIL_PREFERENCES_INIT'),
36-
saveEmailPreferencesDone: mockAction('SAVE_EMAIL_PREFERENCES_DONE', { handle, data: { subscriptions: { TOPCODER_NL_DATA: true } } }),
36+
saveEmailPreferencesDone: mockAction('SAVE_EMAIL_PREFERENCES_DONE', { handle, preferences: { 'Dev Newsletter': true } }),
3737
linkExternalAccountInit: mockAction('LINK_EXTERNAL_ACCOUNT_INIT'),
3838
linkExternalAccountDone: mockAction('LINK_EXTERNAL_ACCOUNT_DONE', { handle, data: linkedAccount2 }),
3939
unlinkExternalAccountInit: mockAction('UNLINK_EXTERNAL_ACCOUNT_INIT'),

config/test.js

+1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ module.exports = {
22
API: {
33
V2: 'https://api.topcoder-dev.com/v2',
44
V3: 'https://api.topcoder-dev.com/v3',
5+
V5: 'https://api.topcoder-dev.com/v5',
56
},
67
dummyConfigKey: 'Dummy config value',
78
};

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
"lint:js": "./node_modules/.bin/eslint --ext .js,.jsx .",
3232
"test": "npm run lint && npm run jest"
3333
},
34-
"version": "0.7.13",
34+
"version": "0.7.14",
3535
"dependencies": {
3636
"auth0-js": "^6.8.4",
3737
"isomorphic-fetch": "^2.2.1",

src/actions/challenge-listing.js

+12-11
Original file line numberDiff line numberDiff line change
@@ -197,26 +197,27 @@ function getActiveChallengesDone(
197197
}).catch(() => ({ challenges: [] })));
198198
}
199199
return Promise.all(calls).then(([ch, uch]) => {
200+
let fullCH = ch;
200201
/* uch array contains challenges where the user is participating in
201202
* some role. The same challenge are already listed in res array, but they
202203
* are not attributed to the user there. This block of code marks user
203204
* challenges in an efficient way. */
204205
if (uch) {
205206
const map = {};
206-
uch.challenges.forEach((item) => { map[item.id] = item; });
207-
ch.challenges.forEach((item) => {
208-
if (map[item.id]) {
209-
/* It is fine to reassing, as the array we modifying is created just
210-
* above within the same function. */
211-
/* eslint-disable no-param-reassign */
212-
item.users[user] = true;
213-
item.userDetails = map[item.id].userDetails;
214-
/* eslint-enable no-param-reassign */
215-
}
207+
uch.challenges.forEach((item) => {
208+
map[item.id] = item;
209+
/* eslint-disable no-param-reassign */
210+
item.users[user] = true;
211+
item.userDetails = map[item.id].userDetails;
212+
/* eslint-enable no-param-reassign */
216213
});
217214
}
218215

219-
let { challenges, meta } = ch;
216+
if (uch) {
217+
fullCH = uch;
218+
}
219+
let { challenges } = fullCH;
220+
let { meta } = ch;
220221
// filter by date range and re-compute meta
221222
// we can safely remove the next two lines when backend support date range
222223
challenges = filterUtil.filterByDate(challenges, frontFilter);

src/actions/profile.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -397,7 +397,7 @@ function saveEmailPreferencesInit() {}
397397
function saveEmailPreferencesDone(profile, tokenV3, preferences) {
398398
const service = getUserService(tokenV3);
399399
return service.saveEmailPreferences(profile, preferences)
400-
.then(res => ({ data: res, handle: profile.handle }));
400+
.then(res => ({ data: res, handle: profile.handle, preferences }));
401401
}
402402

403403
/**

src/reducers/profile.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -434,13 +434,13 @@ function onSaveEmailPreferencesDone(state, { payload, error }) {
434434
return newState;
435435
}
436436

437-
if (newState.profileForHandle !== payload.handle || !payload.data) {
437+
if (newState.profileForHandle !== payload.handle) {
438438
return newState;
439439
}
440440

441441
return {
442442
...newState,
443-
emailPreferences: payload.data.subscriptions,
443+
emailPreferences: payload.preferences,
444444
};
445445
}
446446

src/services/user.js

+14-14
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,7 @@ class User {
114114
this.private = {
115115
api: getApi('V3', tokenV3),
116116
apiV2: getApi('V2', tokenV2),
117+
apiV5: getApi('V5', tokenV3),
117118
tokenV2,
118119
tokenV3,
119120
};
@@ -174,10 +175,10 @@ class User {
174175
* @returns {Promise} Resolves to the email preferences result
175176
*/
176177
async getEmailPreferences(userId) {
177-
const url = `/users/${userId}/preferences/email`;
178-
const res = await this.private.api.get(url);
179-
const x = (await res.json()).result;
180-
return x.content;
178+
const url = `/users/${userId}/preferences`;
179+
const res = await this.private.apiV5.get(url);
180+
const x = (await res.json());
181+
return x.email;
181182
}
182183

183184
/**
@@ -193,18 +194,17 @@ class User {
193194
const settings = {
194195
firstName,
195196
lastName,
196-
subscriptions: {},
197+
createdBy: String(userId),
198+
updatedBy: String(userId),
199+
subscriptions: preferences,
197200
};
198201

199-
if (!preferences) {
200-
settings.subscriptions.TOPCODER_NL_GEN = true;
201-
} else {
202-
settings.subscriptions = preferences;
203-
}
204-
const url = `/users/${userId}/preferences/email`;
205-
206-
const res = await this.private.api.putJson(url, { param: settings });
207-
return getApiResponsePayload(res);
202+
const url = `/users/${userId}/preferences`;
203+
const res = await this.private.apiV5.putJson(
204+
url,
205+
{ email: settings, objectId: String(userId) },
206+
);
207+
return res;
208208
}
209209

210210
/**

0 commit comments

Comments
 (0)