Skip to content

Remove V2 API from Dashboard and Profile Page #58

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 4 commits into from
Apr 24, 2019
Merged
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
5 changes: 5 additions & 0 deletions __tests__/__snapshots__/index.js.snap
Original file line number Diff line number Diff line change
@@ -69,6 +69,7 @@ Object {
"dropAll": [Function],
"getAchievementsDone": [Function],
"getAchievementsInit": [Function],
"getAchievementsV3Done": [Function],
"getActiveChallengesDone": [Function],
"getActiveChallengesInit": [Function],
"getFinancesDone": [Function],
@@ -98,6 +99,7 @@ Object {
"deleteWebLinkInit": [Function],
"getAchievementsDone": [Function],
"getAchievementsInit": [Function],
"getAchievementsV3Done": [Function],
"getCredentialDone": [Function],
"getCredentialInit": [Function],
"getEmailPreferencesDone": [Function],
@@ -206,14 +208,17 @@ Object {
"countReset": [Function],
"debug": [Function],
"dir": [Function],
"dirxml": [Function],
"error": [Function],
"group": [Function],
"groupCollapsed": [Function],
"groupEnd": [Function],
"info": [Function],
"log": [Function],
"table": [Function],
"time": [Function],
"timeEnd": [Function],
"timeLog": [Function],
"trace": [Function],
"warn": [Function],
},
1 change: 1 addition & 0 deletions __tests__/actions/__snapshots__/profile.js.snap
Original file line number Diff line number Diff line change
@@ -14,6 +14,7 @@ Object {
"deleteWebLinkInit": [Function],
"getAchievementsDone": [Function],
"getAchievementsInit": [Function],
"getAchievementsV3Done": [Function],
"getCredentialDone": [Function],
"getCredentialInit": [Function],
"getEmailPreferencesDone": [Function],
15 changes: 14 additions & 1 deletion docs/actions.members.md
Original file line number Diff line number Diff line change
@@ -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>
@@ -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)

10 changes: 9 additions & 1 deletion docs/actions.profile.md
Original file line number Diff line number Diff line change
@@ -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>
@@ -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**
@@ -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>
19 changes: 18 additions & 1 deletion docs/reducers.members.md
Original file line number Diff line number Diff line change
@@ -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>
@@ -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.
18 changes: 17 additions & 1 deletion docs/reducers.profile.md
Original file line number Diff line number Diff line change
@@ -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>
@@ -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**
15 changes: 14 additions & 1 deletion docs/services.user.md
Original file line number Diff line number Diff line change
@@ -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>
@@ -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>
@@ -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)

2 changes: 1 addition & 1 deletion docs/tc.md
Original file line number Diff line number Diff line change
@@ -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)
41 changes: 11 additions & 30 deletions package-lock.json

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

18 changes: 18 additions & 0 deletions src/actions/members.js
Original file line number Diff line number Diff line change
@@ -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
@@ -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,
14 changes: 13 additions & 1 deletion src/actions/profile.js
Original file line number Diff line number Diff line change
@@ -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}
@@ -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.
@@ -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,
3 changes: 1 addition & 2 deletions src/actions/settings.js
Original file line number Diff line number Diff line change
@@ -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 };
1 change: 1 addition & 0 deletions src/reducers/members.js
Original file line number Diff line number Diff line change
@@ -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,
21 changes: 21 additions & 0 deletions src/reducers/profile.js
Original file line number Diff line number Diff line change
@@ -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
@@ -490,6 +510,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,
10 changes: 10 additions & 0 deletions src/services/user.js
Original file line number Diff line number Diff line change
@@ -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.
*
1 change: 0 additions & 1 deletion src/utils/tc.js
Original file line number Diff line number Diff line change
@@ -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.