Skip to content

Commit

Permalink
Merge pull request ubiquity-os-marketplace#206 from gentlementlegen/f…
Browse files Browse the repository at this point in the history
…ix/assignee-cap

fix: assignee cap
  • Loading branch information
gentlementlegen authored Dec 5, 2024
2 parents d0f0921 + 7f50f84 commit fc5f479
Show file tree
Hide file tree
Showing 5 changed files with 75 additions and 7 deletions.
Binary file modified bun.lockb
Binary file not shown.
4 changes: 2 additions & 2 deletions dist/index.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
"@supabase/supabase-js": "2.42.0",
"@ubiquity-dao/rpc-handler": "1.3.0",
"@ubiquity-os/permit-generation": "^2.0.6",
"@ubiquity-os/plugin-sdk": "^1.1.0",
"@ubiquity-os/plugin-sdk": "^1.1.1",
"@ubiquity-os/ubiquity-os-logger": "^1.3.2",
"decimal.js": "10.4.3",
"ethers": "^5.7.2",
Expand Down
17 changes: 13 additions & 4 deletions src/parser/github-comment-module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,12 @@ export class GithubCommentModule extends BaseModule {
async getBodyContent(result: Result, stripContent = false): Promise<string> {
const keysToRemove: string[] = [];
const bodyArray: (string | undefined)[] = [];
const taskReward = Object.values(result).reduce((acc, curr) => {
if (curr.task) {
return curr.task.reward * curr.task.multiplier;
}
return acc;
}, 0);

if (stripContent) {
this.context.logger.info("Stripping content due to excessive length.");
Expand All @@ -52,7 +58,7 @@ export class GithubCommentModule extends BaseModule {
for (const [key, value] of Object.entries(result)) {
// Remove result with 0 total from being displayed
if (result[key].total <= 0) continue;
result[key].evaluationCommentHtml = await this._generateHtml(key, value, true);
result[key].evaluationCommentHtml = await this._generateHtml(key, value, taskReward, true);
bodyArray.push(result[key].evaluationCommentHtml);
}
bodyArray.push(
Expand All @@ -69,7 +75,7 @@ export class GithubCommentModule extends BaseModule {
keysToRemove.push(key);
continue;
}
result[key].evaluationCommentHtml = await this._generateHtml(key, value);
result[key].evaluationCommentHtml = await this._generateHtml(key, value, taskReward);
bodyArray.push(result[key].evaluationCommentHtml);
}
// Remove evaluationCommentHtml because it is superfluous
Expand Down Expand Up @@ -255,7 +261,7 @@ export class GithubCommentModule extends BaseModule {
return content.join("");
}

async _generateHtml(username: string, result: Result[0], stripComments = false) {
async _generateHtml(username: string, result: Result[0], taskReward: number, stripComments = false) {
const sortedTasks = result.comments?.reduce<SortedTasks>(
(acc, curr) => {
if (curr.type & CommentKind.ISSUE) {
Expand All @@ -277,6 +283,9 @@ export class GithubCommentModule extends BaseModule {
this.context.config.erc20RewardToken
);

const rewardsSum = result.comments?.reduce<number>((acc, curr) => acc + (curr.score?.reward ?? 0), 0) ?? 0;
const isCapped = result.total < rewardsSum;

return `
<details>
<summary>
Expand All @@ -294,6 +303,7 @@ export class GithubCommentModule extends BaseModule {
</b>
</summary>
${result.feeRate !== undefined ? `<h6>⚠️ ${new Decimal(result.feeRate).mul(100)}% fee rate has been applied. Consider using the&nbsp;<a href="https://dao.ubq.fi/dollar" target="_blank" rel="noopener">Ubiquity Dollar</a>&nbsp;for no fees.</h6>` : ""}
${isCapped ? `<h6>⚠️ Your rewards have been limited to the task price of ${taskReward} ${tokenSymbol}.</h6>` : ""}
<h6>Contributions Overview</h6>
<table>
<thead>
Expand All @@ -302,7 +312,6 @@ export class GithubCommentModule extends BaseModule {
<th>Contribution</th>
<th>Count</th>
<th>Reward</th>
</tr>
</thead>
<tbody>
Expand Down
59 changes: 59 additions & 0 deletions tests/process.issue.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import permitGenerationResults from "./__mocks__/results/permit-generation-resul
import userCommentResults from "./__mocks__/results/user-comment-results.json";
import cfg from "./__mocks__/results/valid-configuration.json";
import { customOctokit as Octokit } from "@ubiquity-os/plugin-sdk/octokit";
import { CommentAssociation } from "../src/configuration/comment-types";

const issueUrl = process.env.TEST_ISSUE_URL ?? "https://github.com/ubiquity-os/conversation-rewards/issues/5";

Expand Down Expand Up @@ -363,4 +364,62 @@ describe("Modules tests", () => {
},
});
});

it("Should not limit the assigned user", async () => {
const processor = new Processor({
...ctx,
config: {
...ctx.config,
incentives: {
...ctx.config.incentives,
limitRewards: true,
},
},
});
processor["_transformers"] = [
new UserExtractorModule(ctx),
new DataPurgeModule(ctx),
new FormattingEvaluatorModule(ctx),
new ContentEvaluatorModule(ctx),
];
processor["_result"] = {
gentlementlegen: {
total: 999,
task: {
multiplier: 0.5,
reward: 18.5,
},
comments: [
{
id: 1,
content: "",
url: "",
type: CommentAssociation.ASSIGNEE,
score: {
reward: 50000,
multiplier: 3,
},
},
],
userId: 9807008,
},
user2: {
total: 11111111,
userId: 1,
},
};
const result = processor._getRewardsLimit();
expect(result).toBe(9.25);
const total = await processor.run(activity);
expect(total).toMatchObject({
gentlementlegen: { total: 800, task: { multiplier: 1, reward: 400 }, userId: 9807008 },
user2: { total: 0, userId: 1 },
"0x4007": {
total: 400,
},
whilefoo: {
total: 43.562,
},
});
});
});

0 comments on commit fc5f479

Please sign in to comment.