Skip to content

Commit

Permalink
fallsbacks to paid v paid in case a user has voted on all unpaid proj…
Browse files Browse the repository at this point in the history
…ects in the queue
  • Loading branch information
cskartikey committed Nov 16, 2024
1 parent 498d5e7 commit 14096db
Showing 1 changed file with 24 additions and 25 deletions.
49 changes: 24 additions & 25 deletions lib/battles/matchupGenerator.ts
Original file line number Diff line number Diff line change
Expand Up @@ -138,12 +138,32 @@ export async function generateMatchup(
const unpaidProjects = availableProjects.filter(
(p) => p.doubloon_payout == null && p.project_source === 'high_seas',
)
// Chris, randomly decide if we want paid vs unpaid or unpaid vs unpaid otherwise our sample size might get too tight
const usePaidComparison = 1 // quicky dirty hack to always use paid vs unpaid

let project1, project2
const usePaidComparison = unpaidProjects.length === 0; // if true => paid v paid otherwise unpaid v paid

let project1, project2;

if (usePaidComparison) {
const shuffledPaidProjects = [...paidProjects].sort(() => Math.random() - 0.5);
project1 = shuffledPaidProjects[0];
const project1Hours = project1.total_hours || 0;
const hourRange = project1Hours * 0.5;

const similarHourProjects = shuffledPaidProjects.slice(1).filter((p) => {
// Filter out projects with identical repos
if (project1.repo_url == p.repo_url) return false;

const hours = p.total_hours || 0;
return Math.abs(hours - project1Hours) <= hourRange;
});

project2 =
similarHourProjects.length > 0
? similarHourProjects[
Math.floor(Math.random() * similarHourProjects.length)
]
: shuffledPaidProjects[1];
} else {
const now = Date.now()
const weightedUnpaidProjects = unpaidProjects.map((p) => ({
project: p,
Expand Down Expand Up @@ -200,28 +220,7 @@ export async function generateMatchup(
break
}
}
if (!project2) project2 = paidProjects[0]
} else {
const shuffled = [...unpaidProjects].sort(() => Math.random() - 0.5)
project1 = shuffled[0]

const project1Hours = project1.total_hours || 0
const hourRange = project1Hours * 0.5

const similarHourProjects = shuffled.slice(1).filter((p) => {
// Filter out projects with identical repos
if (project1.repo_url == p.repo_url) return false

const hours = p.total_hours || 0
return Math.abs(hours - project1Hours) <= hourRange
})

project2 =
similarHourProjects.length > 0
? similarHourProjects[
Math.floor(Math.random() * similarHourProjects.length)
]
: shuffled[1]
if (!project2) project2 = paidProjects[0];
}

const uniqueVote = await ensureUniqueVote(
Expand Down

0 comments on commit 14096db

Please sign in to comment.