Skip to content

Feature sort registrations #99

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 5 commits into from
Oct 11, 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 @@ -58,6 +58,8 @@ Object {
"getLookerDone": [Function],
},
"lookup": Object {
"getAllCountriesDone": [Function],
"getAllCountriesInit": [Function],
"getCountriesDone": [Function],
"getCountriesInit": [Function],
"getSkillTagsDone": [Function],
Expand Down
2 changes: 2 additions & 0 deletions __tests__/actions/__snapshots__/lookup.js.snap
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
exports[`Module exports 1`] = `
Object {
"lookup": Object {
"getAllCountriesDone": [Function],
"getAllCountriesInit": [Function],
"getCountriesDone": [Function],
"getCountriesInit": [Function],
"getSkillTagsDone": [Function],
Expand Down
10 changes: 10 additions & 0 deletions __tests__/reducers/__snapshots__/lookup.js.snap
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

exports[`Default reducer Get countries 1`] = `
Object {
"allCountries": Array [],
"countries": Array [
Object {
"country": "Afghanistan",
Expand All @@ -23,6 +24,7 @@ Object {

exports[`Default reducer Get countries error 1`] = `
Object {
"allCountries": Array [],
"countries": Array [
Object {
"country": "Afghanistan",
Expand All @@ -44,6 +46,7 @@ Object {

exports[`Default reducer Get skill tags 1`] = `
Object {
"allCountries": Array [],
"countries": Array [],
"loadingSkillTagsError": false,
"skillTags": Array [
Expand All @@ -59,6 +62,7 @@ Object {

exports[`Default reducer Get skill tags error 1`] = `
Object {
"allCountries": Array [],
"countries": Array [],
"loadingSkillTagsError": true,
"skillTags": Array [
Expand All @@ -74,13 +78,15 @@ Object {

exports[`Default reducer Initial state 1`] = `
Object {
"allCountries": Array [],
"countries": Array [],
"skillTags": Array [],
}
`;

exports[`Factory without server side rendering Get countries 1`] = `
Object {
"allCountries": Array [],
"countries": Array [
Object {
"country": "Afghanistan",
Expand All @@ -102,6 +108,7 @@ Object {

exports[`Factory without server side rendering Get countries error 1`] = `
Object {
"allCountries": Array [],
"countries": Array [
Object {
"country": "Afghanistan",
Expand All @@ -123,6 +130,7 @@ Object {

exports[`Factory without server side rendering Get skill tags 1`] = `
Object {
"allCountries": Array [],
"countries": Array [],
"loadingSkillTagsError": false,
"skillTags": Array [
Expand All @@ -138,6 +146,7 @@ Object {

exports[`Factory without server side rendering Get skill tags error 1`] = `
Object {
"allCountries": Array [],
"countries": Array [],
"loadingSkillTagsError": true,
"skillTags": Array [
Expand All @@ -153,6 +162,7 @@ Object {

exports[`Factory without server side rendering Initial state 1`] = `
Object {
"allCountries": Array [],
"countries": Array [],
"skillTags": Array [],
}
Expand Down
114 changes: 57 additions & 57 deletions dist/dev/index.js

Large diffs are not rendered by default.

18 changes: 15 additions & 3 deletions docs/actions.lookup.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,22 +9,34 @@ Actions related to lookup data.
* [.getSkillTagsDone()](#module_actions.lookup.getSkillTagsDone) ⇒ <code>Action</code>
* [.getCountriesInit()](#module_actions.lookup.getCountriesInit) ⇒ <code>Action</code>
* [.getCountriesDone()](#module_actions.lookup.getCountriesDone) ⇒ <code>Action</code>
* [.getAllCountriesInit()](#module_actions.lookup.getCountriesInit) ⇒ <code>Action</code>
* [.getAllCountriesDone(tokenV3)](#module_actions.lookup.getCountriesDone) ⇒ <code>Action</code>

<a name="module_actions.lookup.getSkillTagsInit"></a>

### actions.lookup.getSkillTagsInit() ⇒ <code>Action</code>
Creates an action that signals beginning of getting all skill tags.

**Kind**: static method of [<code>actions.lookup</code>](#module_actions.lookup)
**Kind**: static method of [<code>actions.lookup</code>](#module_actions.lookup)
<a name="module_actions.lookup.getSkillTagsDone"></a>

### actions.lookup.getSkillTagsDone() ⇒ <code>Action</code>
Creates an action that gets all skill tags.

**Kind**: static method of [<code>actions.lookup</code>](#module_actions.lookup)
**Kind**: static method of [<code>actions.lookup</code>](#module_actions.lookup)
<a name="module_actions.lookup.getCountriesDone"></a>

### actions.lookup.getCountriesDone() ⇒ <code>Action</code>
Creates an action that gets all countries.

**Kind**: static method of [<code>actions.lookup</code>](#module_actions.lookup)
**Kind**: static method of [<code>actions.lookup</code>](#module_actions.lookup)
<a name="module_actions.lookup.getCountriesDone"></a>

### actions.lookup.getAllCountriesDone(tokenV3) ⇒ <code>Action</code>
Creates an action that gets all countries new version.

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

| Param | Type | Description |
| --- | --- | --- |
| tokenV3 | <code>String</code> | Topcoder v3 auth token. |
16 changes: 8 additions & 8 deletions docs/services.members.md
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@ Gets member external account info.

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

<a name="module_services.members..MembersService+getExternalLinks"></a>

Expand All @@ -126,7 +126,7 @@ Gets member external links.

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

<a name="module_services.members..MembersService+getSkills"></a>

Expand All @@ -138,7 +138,7 @@ Gets member skills.

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

<a name="module_services.members..MembersService+getStats"></a>

Expand All @@ -150,7 +150,7 @@ Gets member statistics.

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

<a name="module_services.members..MembersService+getStatsHistory"></a>

Expand All @@ -162,7 +162,7 @@ Gets member statistics history

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

<a name="module_services.members..MembersService+getStatsDistribution"></a>

Expand All @@ -174,9 +174,9 @@ Gets member statistics distribution

| Param | Type |
| --- | --- |
| handle | <code>String</code> |
| track | <code>String</code> |
| subTrack | <code>String</code> |
| handle | <code>String</code> |
| track | <code>String</code> |
| subTrack | <code>String</code> |

<a name="module_services.members..MembersService+getMemberSuggestions"></a>

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.

19 changes: 19 additions & 0 deletions src/actions/lookup.js
Original file line number Diff line number Diff line change
Expand Up @@ -42,11 +42,30 @@ function getCountriesDone() {
return getService().getCountries();
}

/**
* @static
* @desc Creates an action that signals beginning of getting all countries api version 5.
* @return {Action}
*/
function getAllCountriesInit() {}

/**
* @static
* @desc Creates an action that gets all countries api version 5.
* @param {String} tokenV3 Optional. Auth token for Topcoder API v3.
* @return {Action}
*/
function getAllCountriesDone(tokenV3) {
return getService(tokenV3).getAllCountries();
}

export default createActions({
LOOKUP: {
GET_SKILL_TAGS_INIT: getSkillTagsInit,
GET_SKILL_TAGS_DONE: getSkillTagsDone,
GET_COUNTRIES_INIT: getCountriesInit,
GET_COUNTRIES_DONE: getCountriesDone,
GET_ALL_COUNTRIES_INIT: getAllCountriesInit,
GET_ALL_COUNTRIES_DONE: getAllCountriesDone,
},
});
22 changes: 22 additions & 0 deletions src/reducers/lookup.js
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,25 @@ function onGetCountriesDone(state, { payload, error }) {
});
}

/**
* Handles LOOKUP/GET_ALL_COUNTRIES_DONE action.
* @param {Object} state
* @param {Object} action Payload will be JSON from api call
* @return {Object} New state
*/
function onGetAllCountriesDone(state, { payload, error }) {
if (error) {
logger.error('Failed to get all countries', payload);
return { ...state, loadingAllCountriesError: true };
}

return ({
...state,
loadingAllCountriesError: false,
allCountries: payload,
});
}

/**
* Creates a new Lookup reducer with the specified initial state.
* @param {Object} initialState Optional. Initial state.
Expand All @@ -60,9 +79,12 @@ function create(initialState = {}) {
[a.getSkillTagsDone]: onGetSkillTagsDone,
[a.getCountriesInit]: state => state,
[a.getCountriesDone]: onGetCountriesDone,
[a.getAllCountriesInit]: state => state,
[a.getAllCountriesDone]: onGetAllCountriesDone,
}, _.defaults(initialState, {
skillTags: [],
countries: [],
allCountries: [],
}));
}

Expand Down
2 changes: 2 additions & 0 deletions src/services/challenges.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import logger from '../utils/logger';
import { setErrorIcon, ERROR_ICON_TYPES } from '../utils/errors';
import { COMPETITION_TRACKS, getApiResponsePayload } from '../utils/tc';
import { getApi } from './api';
import { getService as getMembersService } from './members';

export const ORDER_BY = {
SUBMISSION_END_DATE: 'submissionEndDate',
Expand Down Expand Up @@ -262,6 +263,7 @@ class ChallengesService {
getChallenges,
tokenV2,
tokenV3,
memberService: getMembersService(),
};
}

Expand Down
11 changes: 11 additions & 0 deletions src/services/lookup.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ class LookupService {
constructor(tokenV3) {
this.private = {
api: getApi('V3', tokenV3),
apiV5: getApi('V5', tokenV3),
tokenV3,
};
}
Expand All @@ -37,6 +38,16 @@ class LookupService {
const res = await this.private.api.get('/members/lookup/countries');
return getApiResponsePayload(res);
}

/**
* Gets all countries.
* @return {Promise} Resolves to the countries.
*/
async getAllCountries() {
const res = await this.private.apiV5.get('/lookups/countries');
const jsonResult = await res.json();
return jsonResult;
}
}

let lastInstance = null;
Expand Down
19 changes: 16 additions & 3 deletions src/utils/tc.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,12 +29,25 @@ export const REVIEW_OPPORTUNITY_TYPES = {
* Gets payload from a standard success response from TC API; or throws
* an error in case of a failure response.
* @param {Object} res
* @param {Boolean} shouldThrowError should throw error if request fail
* @return {Promise} Resolves to the payload.
*/
export async function getApiResponsePayload(res) {
if (!res.ok) throw new Error(res.statusText);
export async function getApiResponsePayload(res, shouldThrowError = true) {
if (!res.ok) {
if (shouldThrowError) {
throw new Error(res.statusText);
} else {
return null;
}
}
const x = (await res.json()).result;
if (!x.success) throw new Error(x.content);
if ((!x.success)) {
if (shouldThrowError) {
throw new Error(x.content);
} else {
return null;
}
}
return x.content;
}

Expand Down