disable limited tier if already used

This commit is contained in:
miloschwartz 2025-03-21 18:36:11 -04:00
parent 0dcfeb3587
commit f37be774a6
No known key found for this signature in database
4 changed files with 35 additions and 14 deletions

View file

@ -10,6 +10,7 @@ import { users } from "@server/db/schema";
export type IsSupporterKeyVisibleResponse = {
visible: boolean;
tier?: string;
};
const USER_LIMIT = 5;
@ -29,16 +30,17 @@ export async function isSupporterKeyVisible(
const [numUsers] = await db.select({ count: count() }).from(users);
if (numUsers.count > USER_LIMIT) {
logger.debug(
`User count ${numUsers.count} exceeds limit ${USER_LIMIT}`
);
visible = true;
}
}
logger.debug(`Supporter key visible: ${visible}`);
logger.debug(JSON.stringify(key));
return sendResponse<IsSupporterKeyVisibleResponse>(res, {
data: {
visible
visible,
tier: key?.tier || undefined
},
success: true,
error: false,

View file

@ -32,12 +32,13 @@ export default async function RootLayout({
let supporterData = {
visible: true
};
} as any;
const res = await priv.get<
AxiosResponse<IsSupporterKeyVisibleResponse>
>("supporter-key/visible");
supporterData.visible = res.data.data.visible;
supporterData.tier = res.data.data.tier;
const version = env.app.version;

View file

@ -218,7 +218,9 @@ export default function SupporterStatus() {
</CardFooter>
</Card>
<Card>
<Card
className={`${supporterStatus?.tier === "Limited Supporter" ? "opacity-50" : ""}`}
>
<CardHeader>
<CardTitle>Limited Supporter</CardTitle>
</CardHeader>
@ -246,14 +248,29 @@ export default function SupporterStatus() {
</ul>
</CardContent>
<CardFooter>
<Link
href="https://www.google.com"
target="_blank"
rel="noopener noreferrer"
className="w-full"
>
<Button className="w-full">Buy</Button>
</Link>
{supporterStatus?.tier !==
"Limited Supporter" ? (
<Link
href="https://www.google.com"
target="_blank"
rel="noopener noreferrer"
className="w-full"
>
<Button className="w-full">
Buy
</Button>
</Link>
) : (
<Button
className="w-full"
disabled={
supporterStatus?.tier ===
"Limited Supporter"
}
>
Buy
</Button>
)}
</CardFooter>
</Card>
</div>

View file

@ -2,6 +2,7 @@ import { createContext } from "react";
export type SupporterStatus = {
visible: boolean;
tier?: string;
};
type SupporterStatusContextType = {