diff --git a/packages/console/app/src/component/go-referral.reward-action.ts b/packages/console/app/src/component/go-referral.reward-action.ts new file mode 100644 index 000000000000..71615a046d6c --- /dev/null +++ b/packages/console/app/src/component/go-referral.reward-action.ts @@ -0,0 +1,6 @@ +export function rewardActionKey(reward: { status: "pending" | "available" | "applied" }, hasActiveGo: boolean) { + if (reward.status === "applied") return "workspace.referral.reward.action.applied" as const + if (!hasActiveGo) return "workspace.referral.reward.action.subscribeUnlock" as const + if (reward.status === "pending") return "workspace.referral.reward.action.pendingFriendSubscription" as const + return "workspace.referral.reward.action.view" as const +} diff --git a/packages/console/app/src/component/go-referral.tsx b/packages/console/app/src/component/go-referral.tsx index fd4d5c8b1a20..80791820d778 100644 --- a/packages/console/app/src/component/go-referral.tsx +++ b/packages/console/app/src/component/go-referral.tsx @@ -9,6 +9,7 @@ import { useI18n } from "~/context/i18n" import { useLanguage } from "~/context/language" import { formatResetTime, liteResetTimeKeys } from "~/lib/format-reset-time" import { queryLiteSubscription } from "~/routes/workspace/[id]/go/lite-section" +import { rewardActionKey as referralRewardActionKey } from "~/component/go-referral.reward-action" import "./go-referral.css" type GoReferralSummary = Awaited> @@ -64,9 +65,7 @@ function rewardDescriptionKey(source: GoReferralReward["source"]) { } function rewardActionKey(reward: GoReferralReward, hasActiveGo: boolean) { - if (reward.status === "applied") return "workspace.referral.reward.action.applied" as const - if (reward.status === "pending" || !hasActiveGo) return "workspace.referral.reward.action.subscribeUnlock" as const - return "workspace.referral.reward.action.view" as const + return referralRewardActionKey(reward, hasActiveGo) } function CopyInviteLink(props: { summary: GoReferralSummary }) { diff --git a/packages/console/app/src/i18n/en.ts b/packages/console/app/src/i18n/en.ts index 5701f76da55b..8693baf7004b 100644 --- a/packages/console/app/src/i18n/en.ts +++ b/packages/console/app/src/i18n/en.ts @@ -679,6 +679,7 @@ export const dict = { "workspace.referral.reward.description.inviter": "Invited {{email}}", "workspace.referral.reward.description.invitee": "Invited by {{email}}", "workspace.referral.reward.action.subscribeUnlock": "Subscribe to unlock", + "workspace.referral.reward.action.pendingFriendSubscription": "Waiting for referral to subscribe", "workspace.referral.reward.action.view": "View Reward", "workspace.referral.reward.action.applied": "Reward Applied", "workspace.referral.reward.source.pendingInviter": "Waiting for them to subscribe", diff --git a/packages/console/app/test/goReferral.rewardActionKey.test.ts b/packages/console/app/test/goReferral.rewardActionKey.test.ts new file mode 100644 index 000000000000..bc71b14a8a6c --- /dev/null +++ b/packages/console/app/test/goReferral.rewardActionKey.test.ts @@ -0,0 +1,22 @@ +import { describe, expect, test } from "bun:test" +import { rewardActionKey } from "../src/component/go-referral.reward-action" + +describe("rewardActionKey", () => { + test("returns pending friend subscription message for pending reward with active go", () => { + expect(rewardActionKey({ status: "pending" }, true)).toBe( + "workspace.referral.reward.action.pendingFriendSubscription", + ) + }) + + test("returns subscribe unlock when no active go", () => { + expect(rewardActionKey({ status: "pending" }, false)).toBe("workspace.referral.reward.action.subscribeUnlock") + }) + + test("returns applied for applied reward", () => { + expect(rewardActionKey({ status: "applied" }, true)).toBe("workspace.referral.reward.action.applied") + }) + + test("returns view for available reward with active go", () => { + expect(rewardActionKey({ status: "available" }, true)).toBe("workspace.referral.reward.action.view") + }) +})