Skip to content

Commit 8f48e95

Browse files
authored
Merge pull request #173 from topcoder-platform/issue-4380
Fix challenge register / unregister calls
2 parents 7340b46 + cebf48b commit 8f48e95

File tree

1 file changed

+33
-9
lines changed

1 file changed

+33
-9
lines changed

src/services/challenges.js

+33-9
Original file line numberDiff line numberDiff line change
@@ -460,32 +460,56 @@ class ChallengesService {
460460
return getApiResponsePayload(res);
461461
}
462462

463+
/**
464+
* Get the Resource Role ID from provided Role Name
465+
* @param {String} roleName
466+
* @return {Promise}
467+
*/
468+
async getResourceRoleId(roleName) {
469+
const params = {
470+
name: roleName,
471+
isActive: true,
472+
};
473+
const roles = await this.private.apiV5.get(`/resource-roles?${qs.stringify(params)}`)
474+
.then(checkErrorV5).then(res => res);
475+
476+
if (_.isEmpty(roles.result)) {
477+
throw new Error('Resource Role not found!');
478+
}
479+
480+
return roles.result[0].id;
481+
}
482+
463483
/**
464484
* Registers user to the specified challenge.
465485
* @param {String} challengeId
466-
* @param {String} memberHandle
467-
* @param {String} roleId
468486
* @return {Promise}
469487
*/
470-
async register(challengeId, memberHandle, roleId) {
488+
async register(challengeId) {
489+
const user = decodeToken(this.private.tokenV3);
490+
const roleId = await this.getResourceRoleId('Submitter');
471491
const params = {
472-
challengeId, memberHandle, roleId,
492+
challengeId,
493+
memberHandle: user.handle,
494+
roleId,
473495
};
474-
const res = await this.private.apiV5.post('/resources', params);
496+
const res = await this.private.apiV5.postJson('/resources', params);
475497
if (!res.ok) throw new Error(res.statusText);
476498
return res.json();
477499
}
478500

479501
/**
480502
* Unregisters user from the specified challenge.
481503
* @param {String} challengeId
482-
* @param {String} memberHandle
483-
* @param {String} roleId
484504
* @return {Promise}
485505
*/
486-
async unregister(challengeId, memberHandle, roleId) {
506+
async unregister(challengeId) {
507+
const user = decodeToken(this.private.tokenV3);
508+
const roleId = await this.getResourceRoleId('Submitter');
487509
const params = {
488-
challengeId, memberHandle, roleId,
510+
challengeId,
511+
memberHandle: user.handle,
512+
roleId,
489513
};
490514
const res = await this.private.apiV5.delete('/resources', params);
491515
if (!res.ok) throw new Error(res.statusText);

0 commit comments

Comments
 (0)