Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
92 commits
Select commit Hold shift + click to select a range
e85b7d4
Fix group addMember call
luizrrodrigues Jun 15, 2020
fc7ae1f
Updated loadProfileDone() to use V5 API
luizrrodrigues Jun 16, 2020
b6ae625
fix #4559
nursoltan-s Jun 18, 2020
a3bca94
Update challenge.js
PrakashDurlabhji Jun 18, 2020
531f3ec
Merge pull request #199 from PrakashDurlabhji/issue_4516
sushilshinde Jun 18, 2020
bd5d00d
fix: for #4516
sushilshinde Jun 18, 2020
a633cdd
fix for issue #4556
srjr19 Jun 18, 2020
b3bd699
Merge pull request #198 from nursoltan-s/issue-4559
sushilshinde Jun 19, 2020
d46cf36
fix my challenges page
nursoltan-s Jun 19, 2020
ea649b2
deleted comment
nursoltan-s Jun 19, 2020
915166d
fix for: #4559
sushilshinde Jun 19, 2020
843c7ec
Merge pull request #200 from simranb86/issue_4556
sushilshinde Jun 19, 2020
4238394
fix: for #4556
sushilshinde Jun 19, 2020
ea88d07
Merge pull request #201 from nursoltan-s/issue-4557
sushilshinde Jun 19, 2020
03713ef
fix: for #4557
sushilshinde Jun 19, 2020
606eb2e
Update Challenges param from groupIds to groups
luizrrodrigues Jun 19, 2020
f505394
Merge branch 'integration-v5-challenge-api' into issue-4393
luizrrodrigues Jun 19, 2020
b7da5e1
Merge branch 'integration-v5-challenge-api' into issue-4393
luizrrodrigues Jun 20, 2020
ec7e414
Updated params groupIds to groups
luizrrodrigues Jun 20, 2020
0ae4e1e
Fix challenges filter mapToBackend
luizrrodrigues Jun 22, 2020
49ba5a1
Update auth tests to support v5 API
luizrrodrigues Jun 22, 2020
f3ea4dc
Fix auth description v3 to v5
luizrrodrigues Jun 22, 2020
8d763fc
Merge pull request #194 from topcoder-platform/issue-4393
sushilshinde Jun 23, 2020
7df5b34
fix: for #4393
sushilshinde Jun 23, 2020
87e8aad
Updated terms to use V5 API
luizrrodrigues Jun 23, 2020
f9f4973
Merge pull request #203 from topcoder-platform/issue-4562
sushilshinde Jun 24, 2020
5386e83
fix: for #4562
sushilshinde Jun 24, 2020
bfef016
Update getSubmissionsDone() to use V5 API
luizrrodrigues Jun 24, 2020
0450683
Terms - Fix return data
luizrrodrigues Jun 25, 2020
dc67d57
Merge pull request #204 from topcoder-platform/issue-4562
sushilshinde Jun 25, 2020
45d09bb
fix: for #4562
sushilshinde Jun 25, 2020
d593f70
Updated var type from Number to String to challengeId
luizrrodrigues Jun 25, 2020
1c8f9f2
Update getSubmissions to use UUID instead legacyId
luizrrodrigues Jun 25, 2020
bed729f
Added checkErrorV5 to submissions services
luizrrodrigues Jun 25, 2020
5407a26
Updated action getSubmissionsDone to use submissionsService
luizrrodrigues Jun 30, 2020
4432f22
Updated deleteSubmissionDone to use V5 API
luizrrodrigues Jun 30, 2020
910cebf
Remove try/catch from get submissions in challenge details
luizrrodrigues Jun 30, 2020
d685a39
Merge pull request #205 from topcoder-platform/issue-4582
sushilshinde Jul 1, 2020
ca92a73
fix: for #4582
sushilshinde Jul 1, 2020
d5dbe0d
fix: #issue 4619, sync the fields for V3 and V5 for challenge phases
narekcat Jul 3, 2020
5885c35
Merge pull request #206 from narekcat/issue-4619
sushilshinde Jul 4, 2020
7376517
fix: for #4619
sushilshinde Jul 4, 2020
9c3ad4b
fix: for 4619
sushilshinde Jul 4, 2020
e3c9499
change loadProfileDone to use v3 instead v5 API
luizrrodrigues Jul 8, 2020
4b2df6b
Update tests
luizrrodrigues Jul 8, 2020
862ecd6
Merge pull request #207 from topcoder-platform/issue-4587
sushilshinde Jul 9, 2020
f5471db
fix: for
sushilshinde Jul 9, 2020
68222c0
Fix Issue-4648 : Different data type compare
luizrrodrigues Jul 17, 2020
5e2ea9d
Merge pull request #210 from topcoder-platform/issue-4648
sushilshinde Jul 17, 2020
db83da0
fix: for #4648
sushilshinde Jul 17, 2020
7fd4bd4
Fix var in filterByGroupIds in challenge listing filter
luizrrodrigues Jul 23, 2020
534b811
Merge pull request #211 from topcoder-platform/issue-4650
sushilshinde Jul 24, 2020
fe11ee6
fix: for #4650
sushilshinde Jul 24, 2020
5073881
fix: for #4650
sushilshinde Jul 27, 2020
8ff0d3b
issue-4673 : Fix checkpoint tab when SRR
luizrrodrigues Jul 28, 2020
7313569
Merge pull request #212 from topcoder-platform/issue-4673
sushilshinde Jul 28, 2020
de89e65
fix: for #4673
sushilshinde Jul 28, 2020
74d971b
issue-4688 : Added ongoing filter to challenges listing
luizrrodrigues Jul 31, 2020
b538030
Merge pull request #213 from topcoder-platform/issue-4688
sushilshinde Jul 31, 2020
70e97da
fix: for #4688
sushilshinde Jul 31, 2020
80a9b71
fix(ChallengeDetails): return `userDetails.roles` with challenge details
cagdas001 Aug 4, 2020
e11bded
fix(ChallengeDetails): include only user's own roles at `getUserRoles…
cagdas001 Aug 4, 2020
52ccdd5
issue-4700 : Filter registrants with Submitters only
luizrrodrigues Aug 4, 2020
9138860
Merge pull request #215 from topcoder-platform/issue-4700
sushilshinde Aug 5, 2020
2249d45
fix: for #4700
sushilshinde Aug 5, 2020
68cf7c9
Merge pull request #214 from cagdas001/integration-v5-challenge-api
sushilshinde Aug 5, 2020
2e8a309
fix: for #4672
sushilshinde Aug 5, 2020
9fec28b
Added QA to filter
luizrrodrigues Aug 5, 2020
b58fd0c
Updated challengeSubtracks to challengeTypes in filter
luizrrodrigues Aug 5, 2020
d16b2ba
Update to use new challenge.track name + added QA
luizrrodrigues Aug 6, 2020
b61fb0f
Merge pull request #216 from topcoder-platform/issue-4706
sushilshinde Aug 6, 2020
8bf92d9
fix: for #4706
sushilshinde Aug 6, 2020
ab871c4
Updated legacy with challenge.type and challenge.track
luizrrodrigues Aug 10, 2020
7551062
Merge pull request #217 from topcoder-platform/issue-4709
sushilshinde Aug 10, 2020
7ff38a8
fix: for #4709
sushilshinde Aug 10, 2020
e272c32
Disable filter by Type in getReviewOpportunitiesFilterFunction
luizrrodrigues Aug 11, 2020
4920086
Merge pull request #218 from topcoder-platform/issue-4718
sushilshinde Aug 11, 2020
69fecea
fix: for #4718
sushilshinde Aug 11, 2020
b07363e
fix(members-service): fetch only active challenges
cagdas001 Aug 12, 2020
61b7e18
Merge pull request #221 from topcoder-platform/integration-v5-challen…
sushilshinde Aug 13, 2020
f4992bf
Merge pull request #220 from cagdas001/integration-v5-challenge-api
sushilshinde Aug 13, 2020
1f69bae
fix: for #4714
sushilshinde Aug 13, 2020
7cca2af
Fix challenge.track validation
luizrrodrigues Aug 14, 2020
c167da6
Merge pull request #222 from topcoder-platform/issue-4749
mtwomey Aug 14, 2020
0a44b2e
Fix challenge.track validation
luizrrodrigues Aug 14, 2020
d5ba25f
fix: for #4749
mtwomey Aug 14, 2020
f39c012
Fix getChallengeRegistrants filter to not logged user
mtwomey Aug 14, 2020
cebfd8b
Hotfix - Remove old legacy.track
mtwomey Aug 16, 2020
0077211
Merge remote-tracking branch 'origin/integration-v5-develop' into i-v…
sushilshinde Aug 18, 2020
70643c3
Merge pull request #225 from topcoder-platform/i-v5-develop-18Aug
sushilshinde Aug 18, 2020
50baf8a
ci: sync with integration develop
sushilshinde Aug 18, 2020
f81a302
ci: sync with develop
sushilshinde Aug 18, 2020
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
11 changes: 7 additions & 4 deletions __tests__/__snapshots__/index.js.snap
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,8 @@ Object {
"getSubtrackChallengesInit": [Function],
"getUserMarathonDone": [Function],
"getUserMarathonInit": [Function],
"getUserResourcesDone": [Function],
"getUserResourcesInit": [Function],
"getUserSrmDone": [Function],
"getUserSrmInit": [Function],
},
Expand Down Expand Up @@ -223,9 +225,9 @@ Object {
"setEndDate": [Function],
"setReviewOpportunityType": [Function],
"setStartDate": [Function],
"setSubtracks": [Function],
"setTags": [Function],
"setText": [Function],
"setTypes": [Function],
},
},
"errors": Object {
Expand Down Expand Up @@ -370,9 +372,10 @@ Object {
},
"tc": Object {
"COMPETITION_TRACKS": Object {
"DATA_SCIENCE": "data_science",
"DESIGN": "design",
"DEVELOP": "develop",
"DATA_SCIENCE": "Data Science",
"DESIGN": "Design",
"DEVELOP": "Development",
"QA": "Quality Assurance",
},
"REVIEW_OPPORTUNITY_TYPES": Object {
"Contest Review": "Review",
Expand Down
15 changes: 9 additions & 6 deletions __tests__/actions/auth.js
Original file line number Diff line number Diff line change
@@ -1,17 +1,20 @@
const MOCK_GROUPS_REQ_URL = 'https://api.topcoder-dev.com/v3/groups?memberId=12345&membershipType=user';
const MOCK_GROUPS_REQ_URL = 'https://api.topcoder-dev.com/v5/groups?memberId=12345&membershipType=user';
const MOCK_PROFILE_REQ_URL = 'https://api.topcoder-dev.com/v3/members/username12345';

jest.mock('isomorphic-fetch', () => jest.fn(url => Promise.resolve({
ok: true,
json: () => {
let content;
switch (url) {
case MOCK_GROUPS_REQ_URL: content = ['Group1', 'Group2']; break;
case MOCK_PROFILE_REQ_URL: content = { userId: 12345 }; break;
case MOCK_GROUPS_REQ_URL:
content = ['Group1', 'Group2'];
break;
case MOCK_PROFILE_REQ_URL:
content = { result: { content: { userId: 12345 }, status: 200 } };
break;
default: throw new Error('Unexpected URL!');
}
return {
result: { content, status: 200 },
};
return content;
},
})));

Expand Down
12 changes: 6 additions & 6 deletions __tests__/utils/challenge/filter.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import {
setText, setTags, setSubtracks, setStartDate,
setText, setTags, setTypes, setStartDate,
} from '../../../src/utils/challenge/filter';

describe('challenge filter', () => {
Expand All @@ -22,12 +22,12 @@ describe('challenge filter', () => {
expect(res).toEqual({});
});

test('setSubtracks', () => {
res = setSubtracks({});
test('setTypes', () => {
res = setTypes({});
expect(res).toEqual({});
res = setSubtracks({}, 'subtracks');
expect(res).toEqual({ subtracks: 'subtracks' });
res = setSubtracks({ subtracks: 'subtracks' });
res = setTypes({}, 'types');
expect(res).toEqual({ types: 'types' });
res = setTypes({ types: 'types' });
expect(res).toEqual({});
});

Expand Down
1 change: 1 addition & 0 deletions config/test.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ module.exports = {
API: {
V2: 'https://api.topcoder-dev.com/v2',
V3: 'https://api.topcoder-dev.com/v3',
V5: 'https://api.topcoder-dev.com/v5',
},
dummyConfigKey: 'Dummy config value',
SECRET: {
Expand Down
10 changes: 5 additions & 5 deletions docs/challenge.filter.md
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ users are participating.
* [.setEndDate(state, date)](#module_challenge.filter.setEndDate) ⇒ <code>Object</code>
* [.setReviewOpportunityType(state, reviewOpportunityType)](#module_challenge.filter.setReviewOpportunityType) ⇒ <code>Object</code>
* [.setStartDate(state, date)](#module_challenge.filter.setStartDate) ⇒ <code>Object</code>
* [.setSubtracks(state, subtracks)](#module_challenge.filter.setSubtracks) ⇒ <code>Object</code>
* [.setTypes(state, types)](#module_challenge.filter.setTypes) ⇒ <code>Object</code>
* [.setTags(state, tags)](#module_challenge.filter.setTags) ⇒ <code>Object</code>
* [.setText(state, text)](#module_challenge.filter.setText) ⇒ <code>Object</code>
* _inner_
Expand Down Expand Up @@ -198,17 +198,17 @@ Clones the state and sets the start date.
| state | <code>Object</code> | |
| date | <code>String</code> | ISO date string. |

<a name="module_challenge.filter.setSubtracks"></a>
<a name="module_challenge.filter.setTypes"></a>

### challenge.filter.setSubtracks(state, subtracks) ⇒ <code>Object</code>
Clones the state and sets the subtracks.
### challenge.filter.setTypes(state, types) ⇒ <code>Object</code>
Clones the state and sets the challenge types.

**Kind**: static method of [<code>challenge.filter</code>](#module_challenge.filter)

| Param | Type |
| --- | --- |
| state | <code>Object</code> |
| subtracks | <code>Array</code> |
| types | <code>Array</code> |

<a name="module_challenge.filter.setTags"></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.

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": "1000.19.22",
"version": "1000.19.51",
"dependencies": {
"auth0-js": "^6.8.4",
"config": "^3.2.0",
Expand Down
12 changes: 7 additions & 5 deletions src/actions/auth.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

import { createActions } from 'redux-actions';
import { decodeToken } from 'tc-accounts';
import { getApi } from '../services/api';
import { getApiV3, getApiV5 } from '../services/api';

/**
* @static
Expand All @@ -16,12 +16,14 @@ import { getApi } from '../services/api';
function loadProfileDone(userTokenV3) {
if (!userTokenV3) return Promise.resolve(null);
const user = decodeToken(userTokenV3);
const api = getApi('V3', userTokenV3);
const apiV3 = getApiV3(userTokenV3);
const apiV5 = getApiV5(userTokenV3);
return Promise.all([
api.get(`/members/${user.handle}`)
apiV3.get(`/members/${user.handle}`)
.then(res => res.json()).then(res => (res.result.status === 200 ? res.result.content : {})),
api.get(`/groups?memberId=${user.userId}&membershipType=user`)
.then(res => res.json()).then(res => (res.result.status === 200 ? res.result.content : [])),
apiV5.get(`/groups?memberId=${user.userId}&membershipType=user`)
.then(res => (res.ok ? res.json() : new Error(res.statusText)))
.then(res => (res.message ? new Error(res.message) : res)),
]).then(([profile, groups]) => ({ ...profile, groups }));
}

Expand Down
23 changes: 14 additions & 9 deletions src/actions/challenge.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import _ from 'lodash';
import { config } from 'topcoder-react-utils';
import { createActions } from 'redux-actions';
import { decodeToken } from 'tc-accounts';
import { getService as getChallengesService } from '../services/challenges';
import { getService as getSubmissionService } from '../services/submissions';
import { getService as getMemberService } from '../services/members';
Expand Down Expand Up @@ -103,16 +104,20 @@ function getSubmissionsInit(challengeId) {
* @desc Creates an action that loads user's submissions to the specified
* challenge.
* @param {String} challengeId Challenge ID.
* @param {String} tokenV2 Topcoder auth token v2.
* @param {String} tokenV3 Topcoder auth token v3.
* @return {Action}
*/
function getSubmissionsDone(challengeId, tokenV2) {
return getApi('V2', tokenV2)
.fetch(`/challenges/submissions/${challengeId}/mySubmissions`)
.then(response => response.json())
.then(response => ({
function getSubmissionsDone(challengeId, tokenV3) {
const user = decodeToken(tokenV3);
const submissionsService = getSubmissionService(tokenV3);
const filters = {
challengeId,
memberId: user.userId,
};
return submissionsService.getSubmissions(filters)
.then(submissions => ({
challengeId: _.toString(challengeId),
submissions: response.submissions,
submissions,
}))
.catch((error) => {
const err = { challengeId: _.toString(challengeId), error };
Expand Down Expand Up @@ -289,13 +294,13 @@ function fetchCheckpointsDone(tokenV2, challengeId) {
response.checkpointResults[index].expanded = false;
});
return {
challengeId: Number(challengeId),
challengeId: String(challengeId),
checkpoints: response,
};
})
.catch(error => ({
error,
challengeId: Number(challengeId),
challengeId: String(challengeId),
}));
}

Expand Down
26 changes: 26 additions & 0 deletions src/actions/members.js
Original file line number Diff line number Diff line change
Expand Up @@ -357,6 +357,30 @@ async function getUserMarathonDone(
}));
}

/**
* @static
* @desc Create an action that fetch user registered challenge's resources.
* @param {String} memberId Member id.
* @param {String} uuid Operation UUID.
* @return {Action}
*/
async function getUserResourcesInit(memberId, uuid) {
return { memberId, uuid };
}

/**
* @static
* @desc Create an action that fetch user registered challenge's resources.
* @param {String} handle Member handle.
* @param {String} uuid Operation UUID.
* @return {Action}
*/
async function getUserResourcesDone(memberId, tokenV3, uuid) {
const resources = await getService(tokenV3).getUserResources(memberId);

return { resources, uuid };
}

export default createActions({
MEMBERS: {
DROP: drop,
Expand All @@ -380,5 +404,7 @@ export default createActions({
GET_USER_SRM_DONE: getUserSRMDone,
GET_USER_MARATHON_INIT: getUserMarathonInit,
GET_USER_MARATHON_DONE: getUserMarathonDone,
GET_USER_RESOURCES_INIT: getUserResourcesInit,
GET_USER_RESOURCES_DONE: getUserResourcesDone,
},
});
2 changes: 1 addition & 1 deletion src/actions/smp.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ function deleteSubmissionInit() {}
* @return {Action}
*/
function deleteSubmissionDone(tokenV3, submissionId) {
return getApi('V3', tokenV3).delete(`/submissions/${submissionId}`)
return getApi('V5', tokenV3).delete(`/submissions/${submissionId}`)
.then(() => submissionId);
}

Expand Down
24 changes: 12 additions & 12 deletions src/actions/terms.js
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ function getTermsInit(arg) {
* @return {Action}
*/
function getTermsDone(entity, tokens, mockAgreed) {
const service = getService(tokens.tokenV2);
const service = getService(tokens.tokenV3);
let termsPromise;

// if mockAgreed=true passed, then we create an array of 10 true which we pass to the
Expand All @@ -44,7 +44,7 @@ function getTermsDone(entity, tokens, mockAgreed) {

switch (entity.type) {
case 'challenge': {
termsPromise = service.getChallengeTerms(entity.id, mockAgreedArray);
termsPromise = service.getChallengeTerms(entity.terms, mockAgreedArray);
break;
}
case 'community': {
Expand All @@ -59,7 +59,7 @@ function getTermsDone(entity, tokens, mockAgreed) {
throw new Error(`Entity type '${entity.type}' is not supported by getTermsDone.`);
}

return termsPromise.then(res => ({ entity, terms: res.terms }));
return termsPromise.then(res => ({ entity, terms: res }));
}

/**
Expand Down Expand Up @@ -152,11 +152,11 @@ function getTermDetailsInit(termId) {
* @static
* @desc Creates an action that fetches details of the specified term.
* @param {Number|String} termId
* @param {String} tokenV2
* @param {String} tokenV3
* @return {Action}
*/
function getTermDetailsDone(termId, tokenV2) {
const service = getService(tokenV2);
function getTermDetailsDone(termId, tokenV3) {
const service = getService(tokenV3);
return service.getTermDetails(termId).then(details => ({ termId, details }));
}

Expand All @@ -175,11 +175,11 @@ function getDocuSignUrlInit(templateId) {
* @desc Creates an action that generates the url of DoduSign term
* @param {Number|String} templateId id of document template to sign
* @param {String} returnUrl callback url after finishing singing
* @param {String} tokenV2 auth token
* @param {String} tokenV3 auth token
* @return {Action}
*/
function getDocuSignUrlDone(templateId, returnUrl, tokenV2) {
const service = getService(tokenV2);
function getDocuSignUrlDone(templateId, returnUrl, tokenV3) {
const service = getService(tokenV3);
return service.getDocuSignUrl(templateId, returnUrl)
.then(resp => ({ templateId, docuSignUrl: resp.recipientViewUrl }));
}
Expand All @@ -198,11 +198,11 @@ function agreeTermInit(termId) {
* @static
* @desc Creates an action that agrees to a term.
* @param {Number|String} termId id of term
* @param {String} tokenV2 auth token
* @param {String} tokenV3 auth token
* @return {Action}
*/
function agreeTermDone(termId, tokenV2) {
const service = getService(tokenV2);
function agreeTermDone(termId, tokenV3) {
const service = getService(tokenV3);
return service.agreeTerm(termId).then(resp => ({ termId, success: resp.success }));
}

Expand Down
30 changes: 21 additions & 9 deletions src/reducers/challenge.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ import { fireErrorMessage } from '../utils/errors';

import mySubmissionsManagement from './my-submissions-management';

import { COMPETITION_TRACKS } from '../utils/tc';

/**
* Handles CHALLENGE/GET_DETAILS_INIT action.
* @param {Object} state
Expand Down Expand Up @@ -171,7 +173,7 @@ function onFetchCheckpointsDone(state, action) {
loadingCheckpoints: false,
};
}
if (state.details && state.details.id === action.payload.challengeId) {
if (state.details && state.details.legacyId === action.payload.challengeId) {
return {
...state,
checkpoints: action.payload.checkpoints,
Expand Down Expand Up @@ -465,15 +467,25 @@ export function factory(options = {}) {
challengeId,
tokens.tokenV3,
tokens.tokenV2,
)).then((details) => {
const track = _.get(details, 'payload.track', '').toLowerCase();
const checkpointsPromise = track === 'design' ? (
redux.resolveAction(actions.challenge.fetchCheckpointsDone(tokens.tokenV2, challengeId))
) : null;
const resultsPromise = _.get(details, 'payload.status', '') === 'Completed' ? (
redux.resolveAction(actions.challenge.loadResultsDone(tokens, challengeId, track))
)).then((res) => {
const challengeDetails = _.get(res, 'payload', {});
const track = _.get(challengeDetails, 'track', '');
let checkpointsPromise = null;
if (track === COMPETITION_TRACKS.DESIGN) {
const p = _.get(challengeDetails, 'phases', [])
.filter(x => x.name === 'Checkpoint Review');
if (p.length && !p[0].isOpen) {
checkpointsPromise = redux.resolveAction(
actions.challenge.fetchCheckpointsDone(tokens.tokenV2, challengeDetails.legacyId),
);
}
}
const resultsPromise = challengeDetails.status === 'Completed' ? (
redux.resolveAction(
actions.challenge.loadResultsDone(tokens, challengeId, track.toLowerCase()),
)
) : null;
return Promise.all([details, checkpointsPromise, resultsPromise]);
return Promise.all([res, checkpointsPromise, resultsPromise]);
}).then(([details, checkpoints, results]) => {
state = {
...state,
Expand Down
Loading