Compare commits

..

2 Commits

Author SHA1 Message Date
Jack 035a204b79 fix(console): restore referral reward status 2026-08-03 12:42:58 +00:00
opencode-agent[bot] 89130db6b0 chore: update nix node_modules hashes 2026-08-03 10:07:49 +00:00
2 changed files with 39 additions and 33 deletions
+4 -4
View File
@@ -1,8 +1,8 @@
{
"nodeModules": {
"x86_64-linux": "sha256-SiJd6uXrL/MqqFGN/uUcHh0Wzdlafnpx++VZa5gUCoE=",
"aarch64-linux": "sha256-pKcT34NYIHVasraRTx0ASTzyuFuIzBTxXg6+KSKvTps=",
"aarch64-darwin": "sha256-hzrym0KpiyYAv80eT/DjcSIJWYBUq4QDgDf6Wtot7jU=",
"x86_64-darwin": "sha256-Or5dSTdajUwij0XpovXSXjJ0LmRUcpcW5TJ4q4B0k0A="
"x86_64-linux": "sha256-a7NyYa9vRUEqDfZNDPXXmFO58RDEgioyuGSl5CPBvxo=",
"aarch64-linux": "sha256-l4OJtSEllHvRhktjcaJYwkXBSaJvsIoyoLusbZfYMcM=",
"aarch64-darwin": "sha256-IIl0BQGs1/HLFh0auiQjiwfSQ2nfHcK2G2BAphYW59c=",
"x86_64-darwin": "sha256-vVeuPyd4ZIRYrHouphTuEb4rkRZLKKTAHe840jNh9rU="
}
}
+35 -29
View File
@@ -59,7 +59,16 @@ export namespace Referral {
const accountID = Actor.account()
const code = await ensureCode(workspaceID)
const rows = await Database.use(async (tx) => {
const [invites, inviteeReferral] = await Promise.all([
const [rewards, invites, inviteeReferral] = await Promise.all([
tx
.select({
referralID: ReferralRewardTable.referralID,
amount: ReferralRewardTable.amount,
timeCreated: ReferralRewardTable.timeCreated,
timeApplied: ReferralRewardTable.timeApplied,
})
.from(ReferralRewardTable)
.where(and(eq(ReferralRewardTable.workspaceID, workspaceID), isNull(ReferralRewardTable.timeDeleted))),
tx
.select({ id: ReferralTable.id, inviteeEmail: AuthTable.subject, timeCreated: ReferralTable.timeCreated })
.from(ReferralTable)
@@ -84,36 +93,33 @@ export namespace Referral {
.orderBy(asc(UserTable.timeCreated))
.then((rows) => rows.find((row) => row.inviterEmail) ?? rows[0]),
])
// Hide reward history until the referral_id index can be deployed and this lookup restored.
const rewards: {
referralID: string
workspaceID: string
referralWorkspaceID: string
inviteeEmail: string
amount: number
timeCreated: Date
timeApplied: Date | null
}[] = []
// Hide pending invitee rewards until the referral_id index can be deployed and this lookup restored.
const inviteeRewards = inviteeReferral ? [{ referralID: inviteeReferral.id }] : []
return { inviteeReferral, inviteeRewards, invites, rewards }
return { inviteeReferral, invites, rewards }
})
const rewardReferralIDs = new Set(rows.rewards.map((reward) => reward.referralID))
const inviteeRewardReferralIDs = new Set(rows.inviteeRewards.map((reward) => reward.referralID))
const rewards = rows.rewards.map((reward) => {
const source = reward.workspaceID === reward.referralWorkspaceID ? ("inviter" as const) : ("invitee" as const)
return {
id: reward.referralID,
source,
status: reward.timeApplied ? ("applied" as const) : ("available" as const),
email: source === "invitee" ? (rows.inviteeReferral?.inviterEmail ?? null) : reward.inviteeEmail,
amount: microCentsToCents(reward.amount),
timeCreated: reward.timeCreated,
timeApplied: reward.timeApplied,
}
const invites = new Map(rows.invites.map((referral) => [referral.id, referral]))
const rewards = rows.rewards.flatMap((reward) => {
const source = invites.has(reward.referralID)
? ("inviter" as const)
: rows.inviteeReferral?.id === reward.referralID
? ("invitee" as const)
: undefined
if (!source) return []
return [
{
id: reward.referralID,
source,
status: reward.timeApplied ? ("applied" as const) : ("available" as const),
email:
source === "invitee"
? (rows.inviteeReferral?.inviterEmail ?? null)
: (invites.get(reward.referralID)?.inviteeEmail ?? null),
amount: microCentsToCents(reward.amount),
timeCreated: reward.timeCreated,
timeApplied: reward.timeApplied,
},
]
})
const rewardReferralIDs = new Set(rewards.map((reward) => reward.id))
const pending = [
...rows.invites
.filter((referral) => !rewardReferralIDs.has(referral.id))
@@ -126,7 +132,7 @@ export namespace Referral {
timeCreated: referral.timeCreated,
timeApplied: null,
})),
...(rows.inviteeReferral && !inviteeRewardReferralIDs.has(rows.inviteeReferral.id)
...(rows.inviteeReferral && !rewardReferralIDs.has(rows.inviteeReferral.id)
? [
{
id: `${rows.inviteeReferral.id}:invitee`,