Skip to content

Feature sort submissions latest #110

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 8 commits into from
Nov 21, 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
2 changes: 1 addition & 1 deletion .circleci/config.yml
Original file line number Diff line number Diff line change
@@ -28,7 +28,7 @@ jobs:
- attach_workspace:
at: .
- run: echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" >> ~/.npmrc
- run: npm publish
- run: npm publish --tag=test-release

workflows:
version: 2
2 changes: 2 additions & 0 deletions __tests__/__snapshots__/index.js.snap
Original file line number Diff line number Diff line change
@@ -58,6 +58,8 @@ Object {
"getLookerDone": [Function],
},
"lookup": Object {
"getAllCountriesDone": [Function],
"getAllCountriesInit": [Function],
"getCountriesDone": [Function],
"getCountriesInit": [Function],
"getSkillTagsDone": [Function],
2 changes: 2 additions & 0 deletions __tests__/actions/__snapshots__/lookup.js.snap
Original file line number Diff line number Diff line change
@@ -3,6 +3,8 @@
exports[`Module exports 1`] = `
Object {
"lookup": Object {
"getAllCountriesDone": [Function],
"getAllCountriesInit": [Function],
"getCountriesDone": [Function],
"getCountriesInit": [Function],
"getSkillTagsDone": [Function],
10 changes: 10 additions & 0 deletions __tests__/reducers/__snapshots__/lookup.js.snap
Original file line number Diff line number Diff line change
@@ -2,6 +2,7 @@

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

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

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

exports[`Default reducer Get skill tags error 1`] = `
Object {
"allCountries": Array [],
"countries": Array [],
"loadingSkillTagsError": true,
"skillTags": Array [
@@ -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",
@@ -102,6 +108,7 @@ Object {

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

exports[`Factory without server side rendering Get skill tags 1`] = `
Object {
"allCountries": Array [],
"countries": Array [],
"loadingSkillTagsError": false,
"skillTags": Array [
@@ -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 [
@@ -153,6 +162,7 @@ Object {

exports[`Factory without server side rendering Initial state 1`] = `
Object {
"allCountries": Array [],
"countries": Array [],
"skillTags": Array [],
}
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
@@ -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
@@ -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>

@@ -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>

@@ -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>

@@ -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>

@@ -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>

@@ -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>

1,849 changes: 1,413 additions & 436 deletions package-lock.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -31,7 +31,7 @@
"lint:js": "./node_modules/.bin/eslint --ext .js,.jsx .",
"test": "npm run lint && npm run jest"
},
"version": "0.8.3",
"version": "1000.3.0",
"dependencies": {
"auth0-js": "^6.8.4",
"config": "^3.2.0",
19 changes: 19 additions & 0 deletions src/actions/lookup.js
Original file line number Diff line number Diff line change
@@ -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
@@ -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.
@@ -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: [],
}));
}

2 changes: 2 additions & 0 deletions src/services/challenges.js
Original file line number Diff line number Diff line change
@@ -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',
@@ -262,6 +263,7 @@ class ChallengesService {
getChallenges,
tokenV2,
tokenV3,
memberService: getMembersService(),
};
}

11 changes: 11 additions & 0 deletions src/services/lookup.js
Original file line number Diff line number Diff line change
@@ -14,6 +14,7 @@ class LookupService {
constructor(tokenV3) {
this.private = {
api: getApi('V3', tokenV3),
apiV5: getApi('V5', tokenV3),
tokenV3,
};
}
@@ -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;
19 changes: 16 additions & 3 deletions src/utils/tc.js
Original file line number Diff line number Diff line change
@@ -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;
}