Skip to content

Commit 9b7555e

Browse files
committed
feat: manual reviewer payment amount
* set a manual reviewer prize amount if prizeSets[x].type = "reviewer" was set Signed-off-by: Rakib Ansary <rakibansary@gmail.com>
1 parent 045c81c commit 9b7555e

File tree

1 file changed

+14
-12
lines changed

1 file changed

+14
-12
lines changed

src/services/ProcessorService.js

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -19,22 +19,24 @@ function getReviewerPaymentData(v5Challenge) {
1919

2020
let reviewerPaymentAmount = null;
2121

22-
// Currently self service challenges & challenges with (metadata: { name: "reviewerPrize", value: "0" }) are considered as manual payments.
23-
// A manual payment is not overwritten with an automatically calculated value in OR
24-
if (v5Challenge.legacy != null && v5Challenge.legacy.selfService) {
25-
logger.info('Self service challenge. Treat as manual payment.')
26-
const reviewerPaymentAmounts = _.get(_.find(v5Challenge.prizeSets, prizeSet => prizeSet.type === config.REVIEWER_PAYMENT_TYPE), 'prizes', null)
27-
logger.info(`Reviewer payment amounts: ${JSON.stringify(reviewerPaymentAmounts)}`)
28-
reviewerPaymentAmount = reviewerPaymentAmounts != null && reviewerPaymentAmounts.length > 0 ? reviewerPaymentAmounts[0].value : null;
29-
}
30-
else {
22+
// if prizeSets[x].type == 'reviewer' then prizeSets[x].prizes[0].value is a "fixed" reviewer payment amount
23+
// this applies to Self Service & Topgear specific challenges
24+
// Note: for challenges that set a reviewer prize, but have multiple reviewers all reviewers will have the prize amount
25+
// and if this is not the desired behaviour, then we'll need to settle on a an interface to define which reviewer gets what amount
26+
// and it'll likely be through index (prizeSets[0] is 1st reviewer, prizeSets[1] is 2nd reviewer, etc.) since at this stage reviewer
27+
// information is not available
28+
const reviewerPaymentAmounts = _.get(_.find(v5Challenge.prizeSets, prizeSet => prizeSet.type === config.REVIEWER_PAYMENT_TYPE), 'prizes', null)
29+
logger.info(`${v5Challenge.id}: Reviewer payment amounts: ${JSON.stringify(reviewerPaymentAmounts)}`)
30+
reviewerPaymentAmount = reviewerPaymentAmounts != null && reviewerPaymentAmounts.length > 0 ? reviewerPaymentAmounts[0].value : null;
31+
32+
if (reviewerPaymentAmount == null) {
3133
// Since this is how Topgear currently stores the reviewer payment amount, we need to have this separate check
32-
// If Topgear ever changes the way it stores the reviewer payment amount, this check can be removed in favor of _.some(challenge.prizeSets.type == 'reviewer')
33-
// to make the amount extraction consistent
34+
// If Topgear ever changes the way it stores the reviewer payment amount, this check can be removed to make the amount extraction consistent
3435
reviewerPaymentAmount = _.get(_.find(metadata, m => m.name === 'reviewerPrize'), 'value', null)
35-
logger.info(`Reviewer payment amount (extracted from metadata): ${reviewerPaymentAmount}`)
36+
logger.info(`${v5Challenge.id}: Reviewer payment amount (extracted from metadata): ${reviewerPaymentAmount}`)
3637
}
3738

39+
3840
return {
3941
reviewerPaymentAmount,
4042
manual: reviewerPaymentAmount != null

0 commit comments

Comments
 (0)