From 80a9b719b02f15e7b0f6196527124f3d801e61b0 Mon Sep 17 00:00:00 2001 From: Cagdas U Date: Tue, 4 Aug 2020 19:17:14 +0300 Subject: [PATCH 1/2] fix(ChallengeDetails): return `userDetails.roles` with challenge details --- package-lock.json | 2 +- package.json | 2 +- src/services/challenges.js | 8 ++++++-- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index 503042cf..5728771f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "topcoder-react-lib", - "version": "1000.19.2", + "version": "1000.19.39", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 59ec031f..605ac7a7 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ "lint:js": "./node_modules/.bin/eslint --ext .js,.jsx .", "test": "npm run lint && npm run jest" }, - "version": "1000.19.39", + "version": "1000.19.40", "dependencies": { "auth0-js": "^6.8.4", "config": "^3.2.0", diff --git a/src/services/challenges.js b/src/services/challenges.js index 3e4c5358..4df36f91 100644 --- a/src/services/challenges.js +++ b/src/services/challenges.js @@ -327,6 +327,7 @@ class ChallengesService { let submissions = []; let isLegacyChallenge = false; let isRegistered = false; + const userDetails = { roles: [] }; // condition based on ROUTE used for Review Opportunities, change if needed if (/^[\d]{5,8}$/.test(challengeId)) { @@ -372,6 +373,7 @@ class ChallengesService { } }); } + userDetails.roles = await this.getUserRolesInChallenge(challengeId); } challenge = { @@ -380,6 +382,7 @@ class ChallengesService { isRegistered, registrants, submissions, + userDetails, events: _.map(challenge.events, e => ({ eventName: e.key, eventId: e.id, @@ -703,8 +706,9 @@ class ChallengesService { */ async getUserRolesInChallenge(challengeId) { const user = decodeToken(this.private.tokenV3); - const url = `/resources?challengeId=${challengeId}?memberHandle=${user.handle}`; - const resources = await this.private.apiV5.get(url); + const url = `/resources?challengeId=${challengeId}&memberHandle=${user.handle}`; + const getResourcesResponse = await this.private.apiV5.get(url); + const resources = await getResourcesResponse.json(); if (resources) return _.map(resources, 'roleId'); throw new Error(`Failed to fetch user role from challenge #${challengeId}`); } From e11bded2ec9894775c99489d6252def65eec8e76 Mon Sep 17 00:00:00 2001 From: Cagdas U Date: Tue, 4 Aug 2020 20:20:29 +0300 Subject: [PATCH 2/2] fix(ChallengeDetails): include only user's own roles at `getUserRolesInChallenge` --- src/services/challenges.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/services/challenges.js b/src/services/challenges.js index 4df36f91..ecb7e1d4 100644 --- a/src/services/challenges.js +++ b/src/services/challenges.js @@ -709,7 +709,7 @@ class ChallengesService { const url = `/resources?challengeId=${challengeId}&memberHandle=${user.handle}`; const getResourcesResponse = await this.private.apiV5.get(url); const resources = await getResourcesResponse.json(); - if (resources) return _.map(resources, 'roleId'); + if (resources) return _.map(_.filter(resources, r => r.memberHandle === user.handle), 'roleId'); throw new Error(`Failed to fetch user role from challenge #${challengeId}`); } }