Skip to content

Commit c906762

Browse files
authored
Merge pull request #60 from topcoder-platform/develop
Develop
2 parents a7dd275 + 187ff2c commit c906762

19 files changed

+151
-20
lines changed

__tests__/__snapshots__/index.js.snap

+2
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ Object {
6969
"dropAll": [Function],
7070
"getAchievementsDone": [Function],
7171
"getAchievementsInit": [Function],
72+
"getAchievementsV3Done": [Function],
7273
"getActiveChallengesDone": [Function],
7374
"getActiveChallengesInit": [Function],
7475
"getFinancesDone": [Function],
@@ -98,6 +99,7 @@ Object {
9899
"deleteWebLinkInit": [Function],
99100
"getAchievementsDone": [Function],
100101
"getAchievementsInit": [Function],
102+
"getAchievementsV3Done": [Function],
101103
"getCredentialDone": [Function],
102104
"getCredentialInit": [Function],
103105
"getEmailPreferencesDone": [Function],

__tests__/actions/__snapshots__/profile.js.snap

+1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ Object {
1414
"deleteWebLinkInit": [Function],
1515
"getAchievementsDone": [Function],
1616
"getAchievementsInit": [Function],
17+
"getAchievementsV3Done": [Function],
1718
"getCredentialDone": [Function],
1819
"getCredentialInit": [Function],
1920
"getEmailPreferencesDone": [Function],

dist/dev/index.js

+6-6
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/prod/index.js

+2-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

docs/actions.members.md

+14-1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ Actions related to members data.
99
* [.dropAll()](#module_actions.members.dropAll) ⇒ <code>Action</code>
1010
* [.getAchievementsInit(handle, uuid)](#module_actions.members.getAchievementsInit) ⇒ <code>Action</code>
1111
* [.getAchievementsDone(handle, uuid)](#module_actions.members.getAchievementsDone) ⇒ <code>Action</code>
12+
* [.getAchievementsV3Done(handle, uuid)](#module_actions.members.getAchievementsV3Done) ⇒ <code>Action</code>
1213
* [.getFinancesInit(handle, uuid)](#module_actions.members.getFinancesInit) ⇒ <code>Action</code>
1314
* [.getFinancesDone(handle, uuid, tokenV3)](#module_actions.members.getFinancesDone) ⇒ <code>Action</code>
1415
* [.getStatsInit(handle, uuid)](#module_actions.members.getStatsInit) ⇒ <code>Action</code>
@@ -55,7 +56,19 @@ Creates an action that signals beginning of member achievements
5556
<a name="module_actions.members.getAchievementsDone"></a>
5657

5758
### actions.members.getAchievementsDone(handle, uuid) ⇒ <code>Action</code>
58-
Creates an action that loads member achievements.
59+
Creates an action that loads member achievements from v2 API.
60+
61+
**Kind**: static method of [<code>actions.members</code>](#module_actions.members)
62+
63+
| Param | Type | Description |
64+
| --- | --- | --- |
65+
| handle | <code>String</code> | Member handle. |
66+
| uuid | <code>String</code> | Loading operation |
67+
68+
<a name="module_actions.members.getAchievementsV3Done"></a>
69+
70+
### actions.members.getAchievementsV3Done(handle, uuid) ⇒ <code>Action</code>
71+
Creates an action that loads member achievements from v3 API.
5972

6073
**Kind**: static method of [<code>actions.members</code>](#module_actions.members)
6174

docs/actions.profile.md

+9-1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ Actions for interactions with profile details API.
1414
* [.clearProfile()](#module_actions.profile.clearProfile) ⇒ <code>Action</code>
1515
* [.getAchievementsInit()](#module_actions.profile.getAchievementsInit) ⇒ <code>Action</code>
1616
* [.getAchievementsDone(handle)](#module_actions.profile.getAchievementsDone) ⇒ <code>Action</code>
17+
* [.getAchievementsV3Done(handle)](#module_actions.profile.getAchievementsV3Done) ⇒ <code>Action</code>
1718
* [.getExternalAccountsInit()](#module_actions.profile.getExternalAccountsInit) ⇒ <code>Action</code>
1819
* [.getExternalAccountsDone(handle)](#module_actions.profile.getExternalAccountsDone) ⇒ <code>Action</code>
1920
* [.getExternalLinksInit()](#module_actions.profile.getExternalLinksInit) ⇒ <code>Action</code>
@@ -94,7 +95,7 @@ Creates an action that signals beginning of user achievements loading.
9495
<a name="module_actions.profile.getAchievementsDone"></a>
9596

9697
### actions.profile.getAchievementsDone(handle) ⇒ <code>Action</code>
97-
Creates an action that loads user achievements.
98+
Creates an action that loads user achievements from v2 API.
9899

99100
**Kind**: static method of [<code>actions.profile</code>](#module_actions.profile)
100101
**Todo**
@@ -106,6 +107,13 @@ Creates an action that loads user achievements.
106107
| --- | --- | --- |
107108
| handle | <code>String</code> | User handle. |
108109

110+
<a name="module_actions.profile.getAchievementsV3Done"></a>
111+
112+
### actions.profile.getAchievementsV3Done(handle) ⇒ <code>Action</code>
113+
Creates an action that loads user achievements from V3 API.
114+
115+
**Kind**: static method of [<code>actions.profile</code>](#module_actions.profile)
116+
109117
<a name="module_actions.profile.getExternalAccountsInit"></a>
110118

111119
### actions.profile.getExternalAccountsInit() ⇒ <code>Action</code>

docs/reducers.members.md

+18-1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ Reducer for the Redux store segment that holds members data.
1717
* [~onDropAll()](#module_reducers.members..onDropAll) ⇒ <code>Object</code>
1818
* [~onGetAchievementsInit(state)](#module_reducers.members..onGetAchievementsInit) ⇒ <code>Object</code>
1919
* [~onGetAchievementsDone(state, error)](#module_reducers.members..onGetAchievementsDone) ⇒ <code>Object</code>
20+
* [~onGetAchievementsV3Done(state, error)](#module_reducers.members..onGetAchievementsV3Done) ⇒ <code>Object</code>
2021
* [~onGetFinancesInit(state)](#module_reducers.members..onGetFinancesInit) ⇒ <code>Object</code>
2122
* [~onGetFinancesDone(state, action)](#module_reducers.members..onGetFinancesDone) ⇒ <code>Object</code>
2223
* [~onGetStatsInit(state, action)](#module_reducers.members..onGetStatsInit) ⇒ <code>Object</code>
@@ -81,7 +82,23 @@ Inits the loading of member achievements.
8182
<a name="module_reducers.members..onGetAchievementsDone"></a>
8283

8384
### reducers.members~onGetAchievementsDone(state, error) ⇒ <code>Object</code>
84-
Finalizes the loading of member achievements.
85+
Finalizes the loading of member achievements from v2 API.
86+
87+
**Kind**: inner method of [<code>reducers.members</code>](#module_reducers.members)
88+
**Returns**: <code>Object</code> - New state.
89+
90+
| Param | Type |
91+
| --- | --- |
92+
| state | <code>Object</code> |
93+
| error | <code>Object</code> |
94+
| payload.data | <code>Array</code> |
95+
| payload.handle | <code>String</code> |
96+
| payload.uuid | <code>String</code> |
97+
98+
<a name="module_reducers.members..onGetAchievementsV3Done"></a>
99+
100+
### reducers.members~onGetAchievementsV3Done(state, error) ⇒ <code>Object</code>
101+
Finalizes the loading of member achievements from v3 API.
85102

86103
**Kind**: inner method of [<code>reducers.members</code>](#module_reducers.members)
87104
**Returns**: <code>Object</code> - New state.

docs/reducers.profile.md

+17-1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ Actions for interactions with profile details API.
1414
* [.clearProfile()](#module_actions.profile.clearProfile) ⇒ <code>Action</code>
1515
* [.getAchievementsInit()](#module_actions.profile.getAchievementsInit) ⇒ <code>Action</code>
1616
* [.getAchievementsDone(handle)](#module_actions.profile.getAchievementsDone) ⇒ <code>Action</code>
17+
* [.getAchievementsV3Done(handle)](#module_actions.profile.getAchievementsV3Done) ⇒ <code>Action</code>
1718
* [.getExternalAccountsInit()](#module_actions.profile.getExternalAccountsInit) ⇒ <code>Action</code>
1819
* [.getExternalAccountsDone(handle)](#module_actions.profile.getExternalAccountsDone) ⇒ <code>Action</code>
1920
* [.getExternalLinksInit()](#module_actions.profile.getExternalLinksInit) ⇒ <code>Action</code>
@@ -94,7 +95,22 @@ Creates an action that signals beginning of user achievements loading.
9495
<a name="module_actions.profile.getAchievementsDone"></a>
9596

9697
### actions.profile.getAchievementsDone(handle) ⇒ <code>Action</code>
97-
Creates an action that loads user achievements.
98+
Creates an action that loads user achievements from v2 API.
99+
100+
**Kind**: static method of [<code>actions.profile</code>](#module_actions.profile)
101+
**Todo**
102+
103+
- [ ] This duplicates similar action in [actions.members.md](actions.members.md)!
104+
105+
106+
| Param | Type | Description |
107+
| --- | --- | --- |
108+
| handle | <code>String</code> | User handle. |
109+
110+
<a name="module_actions.profile.getAchievementsV3Done"></a>
111+
112+
### actions.profile.getAchievementsV3Done(handle) ⇒ <code>Action</code>
113+
Creates an action that loads user achievements from v3 API.
98114

99115
**Kind**: static method of [<code>actions.profile</code>](#module_actions.profile)
100116
**Todo**

docs/services.user.md

+14-1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ The User service provides functionality related to Topcoder user
1414
* [new User(tokenV3, tokenV2)](#new_module_services.user..User_new)
1515
* [.getAchievements(username)](#module_services.user..User+getAchievements) ⇒ <code>Object</code>
1616
* [.getUserPublic(username)](#module_services.user..User+getUserPublic) ⇒ <code>Object</code>
17+
* [.getUserPublicV3(username)](#module_services.user..User+getUserPublicV3) ⇒ <code>Object</code>
1718
* [.getUser(username)](#module_services.user..User+getUser) ⇒ <code>Promise</code>
1819
* [.getEmailPreferences(userId)](#module_services.user..User+getEmailPreferences) ⇒ <code>Promise</code>
1920
* [.saveEmailPreferences(user, preferences)](#module_services.user..User+saveEmailPreferences) ⇒ <code>Promise</code>
@@ -54,6 +55,7 @@ Service class.
5455
* [new User(tokenV3, tokenV2)](#new_module_services.user..User_new)
5556
* [.getAchievements(username)](#module_services.user..User+getAchievements) ⇒ <code>Object</code>
5657
* [.getUserPublic(username)](#module_services.user..User+getUserPublic) ⇒ <code>Object</code>
58+
* [.getUserPublicV3(username)](#module_services.user..User+getUserPublicV3) ⇒ <code>Object</code>
5759
* [.getUser(username)](#module_services.user..User+getUser) ⇒ <code>Promise</code>
5860
* [.getEmailPreferences(userId)](#module_services.user..User+getEmailPreferences) ⇒ <code>Promise</code>
5961
* [.saveEmailPreferences(user, preferences)](#module_services.user..User+saveEmailPreferences) ⇒ <code>Promise</code>
@@ -88,7 +90,18 @@ Gets user achievements. Does not need auth.
8890
<a name="module_services.user..User+getUserPublic"></a>
8991

9092
#### user.getUserPublic(username) ⇒ <code>Object</code>
91-
Gets public user info. Does not need auth.
93+
Gets public user info from v2 API. Does not need auth.
94+
95+
**Kind**: instance method of [<code>User</code>](#module_services.user..User)
96+
97+
| Param | Type |
98+
| --- | --- |
99+
| username | <code>String</code> |
100+
101+
<a name="module_services.user..User+getUserPublicV3"></a>
102+
103+
#### user.getUserPublicV3(username) ⇒ <code>Object</code>
104+
Gets public user info from v3 API. Does not need auth.
92105

93106
**Kind**: instance method of [<code>User</code>](#module_services.user..User)
94107

docs/tc.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ Review Opportunity types
2121
<a name="module_tc.getApiResponsePayload"></a>
2222

2323
### tc.getApiResponsePayload(res) ⇒ <code>Promise</code>
24-
Gets payload from a standard success response from TC API; or throws
24+
Gets payload from a standard success response from TC v2 API; or throws
2525
an error in case of a failure response.
2626

2727
**Kind**: static method of [<code>tc</code>](#module_tc)

package-lock.json

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

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.10",
34+
"version": "0.7.11",
3535
"dependencies": {
3636
"auth0-js": "^6.8.4",
3737
"isomorphic-fetch": "^2.2.1",

src/actions/members.js

+18
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,23 @@ async function getAchievementsDone(handle, uuid) {
5757
return { data, handle, uuid };
5858
}
5959

60+
/**
61+
* @static
62+
* @desc Creates an action that loads member achievements from v3 API.
63+
* @param {String} handle Member handle.
64+
* @param {String} uuid Loading operation
65+
* @return {Action}
66+
*/
67+
async function getAchievementsV3Done(handle, uuid) {
68+
let data;
69+
try {
70+
data = await getUserService().getAchievementsV3(handle);
71+
} catch (e) {
72+
data = [];
73+
}
74+
return { data, handle, uuid };
75+
}
76+
6077
/**
6178
* @static
6279
* @desc Creates an action that signals beginning of loading the member's
@@ -344,6 +361,7 @@ export default createActions({
344361
DROP_ALL: dropAll,
345362
GET_ACHIEVEMENTS_INIT: getAchievementsInit,
346363
GET_ACHIEVEMENTS_DONE: getAchievementsDone,
364+
GET_ACHIEVEMENTS_V3_DONE: getAchievementsV3Done,
347365
GET_FINANCES_INIT: getFinancesInit,
348366
GET_FINANCES_DONE: getFinancesDone,
349367
GET_STATS_INIT: getStatsInit,

src/actions/profile.js

+13-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ function getAchievementsInit() {}
3131

3232
/**
3333
* @static
34-
* @desc Creates an action that loads user achievements.
34+
* @desc Creates an action that loads user achievements from API v2.
3535
* @todo This duplicates similar action in {@link actions.members.md}!
3636
* @param {String} handle User handle.
3737
* @return {Action}
@@ -40,6 +40,17 @@ function getAchievementsDone(handle) {
4040
return getUserService().getUserPublic(handle);
4141
}
4242

43+
/**
44+
* @static
45+
* @desc Creates an action that loads user achievements from API v3.
46+
* @todo This duplicates similar action in {@link actions.members.md}!
47+
* @param {String} handle User handle.
48+
* @return {Action}
49+
*/
50+
function getAchievementsV3Done(handle) {
51+
return getUserService().getUserPublicV3(handle);
52+
}
53+
4354
/**
4455
* @static
4556
* @todo To be documented.
@@ -450,6 +461,7 @@ export default createActions({
450461
CLEAR_PROFILE: _.noop,
451462
GET_ACHIEVEMENTS_INIT: getAchievementsInit,
452463
GET_ACHIEVEMENTS_DONE: getAchievementsDone,
464+
GET_ACHIEVEMENTS_V3_DONE: getAchievementsV3Done,
453465
GET_EXTERNAL_ACCOUNTS_INIT: getExternalAccountsInit,
454466
GET_EXTERNAL_ACCOUNTS_DONE: getExternalAccountsDone,
455467
GET_EXTERNAL_LINKS_INIT: getExternalLinksInit,

src/actions/settings.js

+1-2
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,10 @@ import { getService } from '../services/user-traits';
1010
/**
1111
* @static
1212
* @desc Creates an action that loads user's all traits.
13-
* @param {String} uuid Operation UUID.
13+
* @param {String} handle the topcoder member handle
1414
* @param {String} tokenV3 v3 auth token.
1515
* @return {Action}
1616
*/
17-
1817
async function getAllUserTraits(handle, tokenV3) {
1918
const data = await getService(tokenV3).getAllUserTraits(handle);
2019
return { data, handle };

src/reducers/members.js

+1
Original file line numberDiff line numberDiff line change
@@ -438,6 +438,7 @@ function create(initialState = {}) {
438438
[a.dropAll]: onDropAll,
439439
[a.getAchievementsInit]: onGetAchievementsInit,
440440
[a.getAchievementsDone]: onGetAchievementsDone,
441+
[a.getAchievementsV3Done]: onGetAchievementsDone,
441442
[a.getFinancesInit]: onGetFinancesInit,
442443
[a.getFinancesDone]: onGetFinancesDone,
443444
[a.getStatsInit]: onGetStatsInit,

src/reducers/profile.js

+22
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,26 @@ function onGetAchievementsDone(state, { payload, error }) {
2929
});
3030
}
3131

32+
/**
33+
* Handles PROFILE/GET_ACHIEVEMENTS_V3_DONE action.
34+
* @param {Object} state
35+
* @param {Object} action Payload will be JSON from api call
36+
* @return {Object} New state
37+
*/
38+
function onGetAchievementsV3Done(state, { payload, error }) {
39+
if (error) {
40+
return { ...state, loadingError: true };
41+
}
42+
43+
return ({
44+
...state,
45+
achievements: payload.achievements || [],
46+
copilot: payload.copilot,
47+
country: payload.country,
48+
loadingError: false,
49+
});
50+
}
51+
3252
/**
3353
* Handles PROFILE/GET_EXTERNAL_ACCOUNTS_DONE action.
3454
* @param {Object} state
@@ -460,6 +480,7 @@ function onVerifyMemberNewEmailDone(state, { payload, error }) {
460480
return {
461481
...newState,
462482
verifyError: false,
483+
emailChangeResult: payload.data,
463484
};
464485
}
465486

@@ -490,6 +511,7 @@ function create(initialState) {
490511
[a.loadProfile]: (state, action) => ({ ...state, profileForHandle: action.payload }),
491512
[a.getAchievementsInit]: state => state,
492513
[a.getAchievementsDone]: onGetAchievementsDone,
514+
[a.getAchievementsV3Done]: onGetAchievementsV3Done,
493515
[a.getExternalAccountsInit]: state => state,
494516
[a.getExternalAccountsDone]: onGetExternalAccountsDone,
495517
[a.getExternalLinksInit]: state => state,

src/services/user.js

+10
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,16 @@ class User {
141141
return res.json() || null;
142142
}
143143

144+
/**
145+
* Gets public user info from v3 API. Does not need auth.
146+
* @param {String} username
147+
* @return {Object}
148+
*/
149+
async getUserPublicV3(username) {
150+
const res = await this.private.api.get(`/members/${username}`);
151+
return getApiResponsePayload(res);
152+
}
153+
144154
/**
145155
* Gets user data object for the specified username.
146156
*

src/utils/tc.js

-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@ export async function getApiResponsePayload(res) {
3838
return x.content;
3939
}
4040

41-
4241
/**
4342
* Gets payload from a standard success response from TC LOOKER API; or throws
4443
* an error in case of a failure response.

0 commit comments

Comments
 (0)