diff --git a/app/(ui)/rubgram/page.tsx b/app/(ui)/rubgram/page.tsx index 9499b1a..c6c89d1 100755 --- a/app/(ui)/rubgram/page.tsx +++ b/app/(ui)/rubgram/page.tsx @@ -72,6 +72,7 @@ import { EndgameFormWrapper } from "./form"; import { RulesDialog } from "./rules"; import { ActionButton } from "@/components/action-button"; import { generateQrcode } from "../donate/api"; +import { Conditional } from "@/components/conditional"; export const metadata: Metadata = { title: "รับกรรมแทนทางบ้าน", @@ -88,11 +89,12 @@ export default async function EndgamePage({ const cookie = await cookies(); const sid = cookie.get("rsid"); + const promiseCfg = getEndgameConfig(); const session = await getDiscordSession(); - const [q] = + const [[q], userSubs, { count, ...config }] = await Promise.all([ !isNew && sid?.value - ? await db + ? db .select({ // Using endgame.submissions.queue here because // ${endgameSubmissions.queue} does not work @@ -121,11 +123,12 @@ export default async function EndgamePage({ not(endgameSubmissions.deleted), ), ) - : []; - const userSubs = session ? await getUserSubmissions(session.uid) : []; - const { count, ...config } = await getEndgameConfig(); - const [canExpire] = q - ? await db + : [], + session ? getUserSubmissions(session.uid) : [], + promiseCfg, + ]); + const canExpire: Promise = q + ? db .select({ queue: endgameSubmissions.queue }) .from(endgameSubmissions) .where( @@ -134,7 +137,8 @@ export default async function EndgamePage({ lt(endgameSubmissions.queue, q.queue), ), ) - : []; + .then((e) => e.length) + : 0; const qrcode = await generateQrcode(q.price); @@ -150,14 +154,14 @@ export default async function EndgamePage({
คิวของคุณคือหมายเลข {q.queue} - {canExpire && ( + เลขคิวของคุณอาจมีการเปลื่ยนแปลง - )} +
diff --git a/components/conditional.tsx b/components/conditional.tsx new file mode 100644 index 0000000..a7938db --- /dev/null +++ b/components/conditional.tsx @@ -0,0 +1,15 @@ +"use client"; + +import type { MaybePromise } from "bun"; +import { use, type ReactNode } from "react"; + +export function Conditional({ + children, + c, +}: { + children: ReactNode; + c: MaybePromise; +}) { + const val = use(c); + return !!val && children; +}