From f9b423edede22c900456ecfd089b6d7ec6ae7dae Mon Sep 17 00:00:00 2001 From: gunshiz Date: Mon, 29 Jun 2026 20:30:06 +0700 Subject: [PATCH] feat: support user-related placeholders in submission templates and standardize display time to Asia/Bangkok timezone --- app/actions/submissions.ts | 9 ++++++++- app/admin/form/[id]/extra/client.tsx | 4 ++-- app/admin/form/[id]/result/[submissionId]/client.tsx | 6 +++--- app/admin/form/[id]/result/page.tsx | 2 +- 4 files changed, 14 insertions(+), 7 deletions(-) diff --git a/app/actions/submissions.ts b/app/actions/submissions.ts index 35c6993..0a5100c 100644 --- a/app/actions/submissions.ts +++ b/app/actions/submissions.ts @@ -113,8 +113,15 @@ export async function submitForm( }, {} as Record); let message = templateToUse; - // Replace {1}, {2}, etc. with value + // Replace {1}, {2}, etc. with value, and new variables message = message.replace(/\{([^}]+)\}/g, (match: string, p1: string) => { + const key = p1.toLowerCase(); + if (key === "username" || key === "displayname") { + return session.user?.name || "Unknown User"; + } + if (key === "id") { + return discordId || "Unknown ID"; + } return answersDict[p1] || "Not Provided"; }); diff --git a/app/admin/form/[id]/extra/client.tsx b/app/admin/form/[id]/extra/client.tsx index 196a3eb..399b65d 100644 --- a/app/admin/form/[id]/extra/client.tsx +++ b/app/admin/form/[id]/extra/client.tsx @@ -73,7 +73,7 @@ export default function FormExtraClient({ form }: FormExtraClientProps) { className="min-h-24" />

- Use {`{1}`}, {`{2}`} to insert answers according to question order. Example: {`{1}`} for the first question. + Use {`{1}`}, {`{2}`} to insert answers according to question order, and {`{username}`}, {`{displayname}`}, {`{id}`} for user info.

@@ -86,7 +86,7 @@ export default function FormExtraClient({ form }: FormExtraClientProps) { className="min-h-24" />

- Used when a user updates their existing submission. Use {`{1}`}, {`{2}`} to insert answers. + Used when a user updates their existing submission. Use {`{1}`}, {`{2}`} for answers, and {`{username}`}, {`{displayname}`}, {`{id}`} for user info.

diff --git a/app/admin/form/[id]/result/[submissionId]/client.tsx b/app/admin/form/[id]/result/[submissionId]/client.tsx index 553ccb8..5356366 100644 --- a/app/admin/form/[id]/result/[submissionId]/client.tsx +++ b/app/admin/form/[id]/result/[submissionId]/client.tsx @@ -77,14 +77,14 @@ export default function SubmissionDetailClient({
Initial Submission: - {new Date(submission.submittedAt).toLocaleString(undefined, { hour12: false })} + {new Date(submission.submittedAt).toLocaleString("en-US", { timeZone: "Asia/Bangkok", hour12: false })}
{editHistory.length > 0 && (
Edit History:
    {editHistory.map((edit, idx) => ( -
  • Edited at {new Date(edit.editedAt).toLocaleString(undefined, { hour12: false })}
  • +
  • Edited at {new Date(edit.editedAt).toLocaleString("en-US", { timeZone: "Asia/Bangkok", hour12: false })}
  • ))}
@@ -197,7 +197,7 @@ export default function SubmissionDetailClient({ >
- {new Date(entry.editedAt).toLocaleString()} + {new Date(entry.editedAt).toLocaleString("en-US", { timeZone: "Asia/Bangkok", hour12: false })}
{entry.answer || No response} diff --git a/app/admin/form/[id]/result/page.tsx b/app/admin/form/[id]/result/page.tsx index 620b731..de986cf 100644 --- a/app/admin/form/[id]/result/page.tsx +++ b/app/admin/form/[id]/result/page.tsx @@ -81,7 +81,7 @@ export default async function ResultsListPage( - {new Date(sub.submittedAt).toLocaleString()} + {new Date(sub.submittedAt).toLocaleString("en-US", { timeZone: "Asia/Bangkok", hour12: false })}