Skip to content

Develop #60

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 9 commits into from
Apr 24, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions __tests__/__snapshots__/index.js.snap
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ Object {
"dropAll": [Function],
"getAchievementsDone": [Function],
"getAchievementsInit": [Function],
"getAchievementsV3Done": [Function],
"getActiveChallengesDone": [Function],
"getActiveChallengesInit": [Function],
"getFinancesDone": [Function],
Expand Down Expand Up @@ -98,6 +99,7 @@ Object {
"deleteWebLinkInit": [Function],
"getAchievementsDone": [Function],
"getAchievementsInit": [Function],
"getAchievementsV3Done": [Function],
"getCredentialDone": [Function],
"getCredentialInit": [Function],
"getEmailPreferencesDone": [Function],
Expand Down
1 change: 1 addition & 0 deletions __tests__/actions/__snapshots__/profile.js.snap
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ Object {
"deleteWebLinkInit": [Function],
"getAchievementsDone": [Function],
"getAchievementsInit": [Function],
"getAchievementsV3Done": [Function],
"getCredentialDone": [Function],
"getCredentialInit": [Function],
"getEmailPreferencesDone": [Function],
Expand Down
12 changes: 6 additions & 6 deletions dist/dev/index.js

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions dist/prod/index.js

Large diffs are not rendered by default.

15 changes: 14 additions & 1 deletion docs/actions.members.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ Actions related to members data.
* [.dropAll()](#module_actions.members.dropAll) ⇒ <code>Action</code>
* [.getAchievementsInit(handle, uuid)](#module_actions.members.getAchievementsInit) ⇒ <code>Action</code>
* [.getAchievementsDone(handle, uuid)](#module_actions.members.getAchievementsDone) ⇒ <code>Action</code>
* [.getAchievementsV3Done(handle, uuid)](#module_actions.members.getAchievementsV3Done) ⇒ <code>Action</code>
* [.getFinancesInit(handle, uuid)](#module_actions.members.getFinancesInit) ⇒ <code>Action</code>
* [.getFinancesDone(handle, uuid, tokenV3)](#module_actions.members.getFinancesDone) ⇒ <code>Action</code>
* [.getStatsInit(handle, uuid)](#module_actions.members.getStatsInit) ⇒ <code>Action</code>
Expand Down Expand Up @@ -55,7 +56,19 @@ Creates an action that signals beginning of member achievements
<a name="module_actions.members.getAchievementsDone"></a>

### actions.members.getAchievementsDone(handle, uuid) ⇒ <code>Action</code>
Creates an action that loads member achievements.
Creates an action that loads member achievements from v2 API.

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

| Param | Type | Description |
| --- | --- | --- |
| handle | <code>String</code> | Member handle. |
| uuid | <code>String</code> | Loading operation |

<a name="module_actions.members.getAchievementsV3Done"></a>

### actions.members.getAchievementsV3Done(handle, uuid) ⇒ <code>Action</code>
Creates an action that loads member achievements from v3 API.

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

Expand Down
10 changes: 9 additions & 1 deletion docs/actions.profile.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ Actions for interactions with profile details API.
* [.clearProfile()](#module_actions.profile.clearProfile) ⇒ <code>Action</code>
* [.getAchievementsInit()](#module_actions.profile.getAchievementsInit) ⇒ <code>Action</code>
* [.getAchievementsDone(handle)](#module_actions.profile.getAchievementsDone) ⇒ <code>Action</code>
* [.getAchievementsV3Done(handle)](#module_actions.profile.getAchievementsV3Done) ⇒ <code>Action</code>
* [.getExternalAccountsInit()](#module_actions.profile.getExternalAccountsInit) ⇒ <code>Action</code>
* [.getExternalAccountsDone(handle)](#module_actions.profile.getExternalAccountsDone) ⇒ <code>Action</code>
* [.getExternalLinksInit()](#module_actions.profile.getExternalLinksInit) ⇒ <code>Action</code>
Expand Down Expand Up @@ -94,7 +95,7 @@ Creates an action that signals beginning of user achievements loading.
<a name="module_actions.profile.getAchievementsDone"></a>

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

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

<a name="module_actions.profile.getAchievementsV3Done"></a>

### actions.profile.getAchievementsV3Done(handle) ⇒ <code>Action</code>
Creates an action that loads user achievements from V3 API.

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

<a name="module_actions.profile.getExternalAccountsInit"></a>

### actions.profile.getExternalAccountsInit() ⇒ <code>Action</code>
Expand Down
19 changes: 18 additions & 1 deletion docs/reducers.members.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ Reducer for the Redux store segment that holds members data.
* [~onDropAll()](#module_reducers.members..onDropAll) ⇒ <code>Object</code>
* [~onGetAchievementsInit(state)](#module_reducers.members..onGetAchievementsInit) ⇒ <code>Object</code>
* [~onGetAchievementsDone(state, error)](#module_reducers.members..onGetAchievementsDone) ⇒ <code>Object</code>
* [~onGetAchievementsV3Done(state, error)](#module_reducers.members..onGetAchievementsV3Done) ⇒ <code>Object</code>
* [~onGetFinancesInit(state)](#module_reducers.members..onGetFinancesInit) ⇒ <code>Object</code>
* [~onGetFinancesDone(state, action)](#module_reducers.members..onGetFinancesDone) ⇒ <code>Object</code>
* [~onGetStatsInit(state, action)](#module_reducers.members..onGetStatsInit) ⇒ <code>Object</code>
Expand Down Expand Up @@ -81,7 +82,23 @@ Inits the loading of member achievements.
<a name="module_reducers.members..onGetAchievementsDone"></a>

### reducers.members~onGetAchievementsDone(state, error) ⇒ <code>Object</code>
Finalizes the loading of member achievements.
Finalizes the loading of member achievements from v2 API.

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

| Param | Type |
| --- | --- |
| state | <code>Object</code> |
| error | <code>Object</code> |
| payload.data | <code>Array</code> |
| payload.handle | <code>String</code> |
| payload.uuid | <code>String</code> |

<a name="module_reducers.members..onGetAchievementsV3Done"></a>

### reducers.members~onGetAchievementsV3Done(state, error) ⇒ <code>Object</code>
Finalizes the loading of member achievements from v3 API.

**Kind**: inner method of [<code>reducers.members</code>](#module_reducers.members)
**Returns**: <code>Object</code> - New state.
Expand Down
18 changes: 17 additions & 1 deletion docs/reducers.profile.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ Actions for interactions with profile details API.
* [.clearProfile()](#module_actions.profile.clearProfile) ⇒ <code>Action</code>
* [.getAchievementsInit()](#module_actions.profile.getAchievementsInit) ⇒ <code>Action</code>
* [.getAchievementsDone(handle)](#module_actions.profile.getAchievementsDone) ⇒ <code>Action</code>
* [.getAchievementsV3Done(handle)](#module_actions.profile.getAchievementsV3Done) ⇒ <code>Action</code>
* [.getExternalAccountsInit()](#module_actions.profile.getExternalAccountsInit) ⇒ <code>Action</code>
* [.getExternalAccountsDone(handle)](#module_actions.profile.getExternalAccountsDone) ⇒ <code>Action</code>
* [.getExternalLinksInit()](#module_actions.profile.getExternalLinksInit) ⇒ <code>Action</code>
Expand Down Expand Up @@ -94,7 +95,22 @@ Creates an action that signals beginning of user achievements loading.
<a name="module_actions.profile.getAchievementsDone"></a>

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

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

- [ ] This duplicates similar action in [actions.members.md](actions.members.md)!


| Param | Type | Description |
| --- | --- | --- |
| handle | <code>String</code> | User handle. |

<a name="module_actions.profile.getAchievementsV3Done"></a>

### actions.profile.getAchievementsV3Done(handle) ⇒ <code>Action</code>
Creates an action that loads user achievements from v3 API.

**Kind**: static method of [<code>actions.profile</code>](#module_actions.profile)
**Todo**
Expand Down
15 changes: 14 additions & 1 deletion docs/services.user.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ The User service provides functionality related to Topcoder user
* [new User(tokenV3, tokenV2)](#new_module_services.user..User_new)
* [.getAchievements(username)](#module_services.user..User+getAchievements) ⇒ <code>Object</code>
* [.getUserPublic(username)](#module_services.user..User+getUserPublic) ⇒ <code>Object</code>
* [.getUserPublicV3(username)](#module_services.user..User+getUserPublicV3) ⇒ <code>Object</code>
* [.getUser(username)](#module_services.user..User+getUser) ⇒ <code>Promise</code>
* [.getEmailPreferences(userId)](#module_services.user..User+getEmailPreferences) ⇒ <code>Promise</code>
* [.saveEmailPreferences(user, preferences)](#module_services.user..User+saveEmailPreferences) ⇒ <code>Promise</code>
Expand Down Expand Up @@ -54,6 +55,7 @@ Service class.
* [new User(tokenV3, tokenV2)](#new_module_services.user..User_new)
* [.getAchievements(username)](#module_services.user..User+getAchievements) ⇒ <code>Object</code>
* [.getUserPublic(username)](#module_services.user..User+getUserPublic) ⇒ <code>Object</code>
* [.getUserPublicV3(username)](#module_services.user..User+getUserPublicV3) ⇒ <code>Object</code>
* [.getUser(username)](#module_services.user..User+getUser) ⇒ <code>Promise</code>
* [.getEmailPreferences(userId)](#module_services.user..User+getEmailPreferences) ⇒ <code>Promise</code>
* [.saveEmailPreferences(user, preferences)](#module_services.user..User+saveEmailPreferences) ⇒ <code>Promise</code>
Expand Down Expand Up @@ -88,7 +90,18 @@ Gets user achievements. Does not need auth.
<a name="module_services.user..User+getUserPublic"></a>

#### user.getUserPublic(username) ⇒ <code>Object</code>
Gets public user info. Does not need auth.
Gets public user info from v2 API. Does not need auth.

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

| Param | Type |
| --- | --- |
| username | <code>String</code> |

<a name="module_services.user..User+getUserPublicV3"></a>

#### user.getUserPublicV3(username) ⇒ <code>Object</code>
Gets public user info from v3 API. Does not need auth.

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

Expand Down
2 changes: 1 addition & 1 deletion docs/tc.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ Review Opportunity types
<a name="module_tc.getApiResponsePayload"></a>

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

**Kind**: static method of [<code>tc</code>](#module_tc)
Expand Down
2 changes: 1 addition & 1 deletion package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
"lint:js": "./node_modules/.bin/eslint --ext .js,.jsx .",
"test": "npm run lint && npm run jest"
},
"version": "0.7.10",
"version": "0.7.11",
"dependencies": {
"auth0-js": "^6.8.4",
"isomorphic-fetch": "^2.2.1",
Expand Down
18 changes: 18 additions & 0 deletions src/actions/members.js
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,23 @@ async function getAchievementsDone(handle, uuid) {
return { data, handle, uuid };
}

/**
* @static
* @desc Creates an action that loads member achievements from v3 API.
* @param {String} handle Member handle.
* @param {String} uuid Loading operation
* @return {Action}
*/
async function getAchievementsV3Done(handle, uuid) {
let data;
try {
data = await getUserService().getAchievementsV3(handle);
} catch (e) {
data = [];
}
return { data, handle, uuid };
}

/**
* @static
* @desc Creates an action that signals beginning of loading the member's
Expand Down Expand Up @@ -344,6 +361,7 @@ export default createActions({
DROP_ALL: dropAll,
GET_ACHIEVEMENTS_INIT: getAchievementsInit,
GET_ACHIEVEMENTS_DONE: getAchievementsDone,
GET_ACHIEVEMENTS_V3_DONE: getAchievementsV3Done,
GET_FINANCES_INIT: getFinancesInit,
GET_FINANCES_DONE: getFinancesDone,
GET_STATS_INIT: getStatsInit,
Expand Down
14 changes: 13 additions & 1 deletion src/actions/profile.js
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ function getAchievementsInit() {}

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

/**
* @static
* @desc Creates an action that loads user achievements from API v3.
* @todo This duplicates similar action in {@link actions.members.md}!
* @param {String} handle User handle.
* @return {Action}
*/
function getAchievementsV3Done(handle) {
return getUserService().getUserPublicV3(handle);
}

/**
* @static
* @todo To be documented.
Expand Down Expand Up @@ -450,6 +461,7 @@ export default createActions({
CLEAR_PROFILE: _.noop,
GET_ACHIEVEMENTS_INIT: getAchievementsInit,
GET_ACHIEVEMENTS_DONE: getAchievementsDone,
GET_ACHIEVEMENTS_V3_DONE: getAchievementsV3Done,
GET_EXTERNAL_ACCOUNTS_INIT: getExternalAccountsInit,
GET_EXTERNAL_ACCOUNTS_DONE: getExternalAccountsDone,
GET_EXTERNAL_LINKS_INIT: getExternalLinksInit,
Expand Down
3 changes: 1 addition & 2 deletions src/actions/settings.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,10 @@ import { getService } from '../services/user-traits';
/**
* @static
* @desc Creates an action that loads user's all traits.
* @param {String} uuid Operation UUID.
* @param {String} handle the topcoder member handle
* @param {String} tokenV3 v3 auth token.
* @return {Action}
*/

async function getAllUserTraits(handle, tokenV3) {
const data = await getService(tokenV3).getAllUserTraits(handle);
return { data, handle };
Expand Down
1 change: 1 addition & 0 deletions src/reducers/members.js
Original file line number Diff line number Diff line change
Expand Up @@ -438,6 +438,7 @@ function create(initialState = {}) {
[a.dropAll]: onDropAll,
[a.getAchievementsInit]: onGetAchievementsInit,
[a.getAchievementsDone]: onGetAchievementsDone,
[a.getAchievementsV3Done]: onGetAchievementsDone,
[a.getFinancesInit]: onGetFinancesInit,
[a.getFinancesDone]: onGetFinancesDone,
[a.getStatsInit]: onGetStatsInit,
Expand Down
22 changes: 22 additions & 0 deletions src/reducers/profile.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,26 @@ function onGetAchievementsDone(state, { payload, error }) {
});
}

/**
* Handles PROFILE/GET_ACHIEVEMENTS_V3_DONE action.
* @param {Object} state
* @param {Object} action Payload will be JSON from api call
* @return {Object} New state
*/
function onGetAchievementsV3Done(state, { payload, error }) {
if (error) {
return { ...state, loadingError: true };
}

return ({
...state,
achievements: payload.achievements || [],
copilot: payload.copilot,
country: payload.country,
loadingError: false,
});
}

/**
* Handles PROFILE/GET_EXTERNAL_ACCOUNTS_DONE action.
* @param {Object} state
Expand Down Expand Up @@ -460,6 +480,7 @@ function onVerifyMemberNewEmailDone(state, { payload, error }) {
return {
...newState,
verifyError: false,
emailChangeResult: payload.data,
};
}

Expand Down Expand Up @@ -490,6 +511,7 @@ function create(initialState) {
[a.loadProfile]: (state, action) => ({ ...state, profileForHandle: action.payload }),
[a.getAchievementsInit]: state => state,
[a.getAchievementsDone]: onGetAchievementsDone,
[a.getAchievementsV3Done]: onGetAchievementsV3Done,
[a.getExternalAccountsInit]: state => state,
[a.getExternalAccountsDone]: onGetExternalAccountsDone,
[a.getExternalLinksInit]: state => state,
Expand Down
10 changes: 10 additions & 0 deletions src/services/user.js
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,16 @@ class User {
return res.json() || null;
}

/**
* Gets public user info from v3 API. Does not need auth.
* @param {String} username
* @return {Object}
*/
async getUserPublicV3(username) {
const res = await this.private.api.get(`/members/${username}`);
return getApiResponsePayload(res);
}

/**
* Gets user data object for the specified username.
*
Expand Down
1 change: 0 additions & 1 deletion src/utils/tc.js
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,6 @@ export async function getApiResponsePayload(res) {
return x.content;
}


/**
* Gets payload from a standard success response from TC LOOKER API; or throws
* an error in case of a failure response.
Expand Down