Skip to content

Commit cebf48b

Browse files
Issue#4380: Fix register / unregister calls
1 parent 4c94cb2 commit cebf48b

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
@@ -450,32 +450,56 @@ class ChallengesService {
450450
return getApiResponsePayload(res);
451451
}
452452

453+
/**
454+
* Get the Resource Role ID from provided Role Name
455+
* @param {String} roleName
456+
* @return {Promise}
457+
*/
458+
async getResourceRoleId(roleName) {
459+
const params = {
460+
name: roleName,
461+
isActive: true,
462+
};
463+
const roles = await this.private.apiV5.get(`/resource-roles?${qs.stringify(params)}`)
464+
.then(checkErrorV5).then(res => res);
465+
466+
if (_.isEmpty(roles.result)) {
467+
throw new Error('Resource Role not found!');
468+
}
469+
470+
return roles.result[0].id;
471+
}
472+
453473
/**
454474
* Registers user to the specified challenge.
455475
* @param {String} challengeId
456-
* @param {String} memberHandle
457-
* @param {String} roleId
458476
* @return {Promise}
459477
*/
460-
async register(challengeId, memberHandle, roleId) {
478+
async register(challengeId) {
479+
const user = decodeToken(this.private.tokenV3);
480+
const roleId = await this.getResourceRoleId('Submitter');
461481
const params = {
462-
challengeId, memberHandle, roleId,
482+
challengeId,
483+
memberHandle: user.handle,
484+
roleId,
463485
};
464-
const res = await this.private.apiV5.post('/resources', params);
486+
const res = await this.private.apiV5.postJson('/resources', params);
465487
if (!res.ok) throw new Error(res.statusText);
466488
return res.json();
467489
}
468490

469491
/**
470492
* Unregisters user from the specified challenge.
471493
* @param {String} challengeId
472-
* @param {String} memberHandle
473-
* @param {String} roleId
474494
* @return {Promise}
475495
*/
476-
async unregister(challengeId, memberHandle, roleId) {
496+
async unregister(challengeId) {
497+
const user = decodeToken(this.private.tokenV3);
498+
const roleId = await this.getResourceRoleId('Submitter');
477499
const params = {
478-
challengeId, memberHandle, roleId,
500+
challengeId,
501+
memberHandle: user.handle,
502+
roleId,
479503
};
480504
const res = await this.private.apiV5.delete('/resources', params);
481505
if (!res.ok) throw new Error(res.statusText);

0 commit comments

Comments
 (0)