From ea58770f168c65900d489abc7395df7484944c77 Mon Sep 17 00:00:00 2001 From: JSR Date: Fri, 27 Mar 2026 20:26:28 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E7=9C=8B=E6=9D=BFSQL=E4=BF=9D=E5=AD=98?= =?UTF-8?q?=E6=97=B6=E8=87=AA=E5=8A=A8=E5=8E=BB=E9=99=A4=E5=B0=BE=E9=83=A8?= =?UTF-8?q?=E5=88=86=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/BoardManager.tsx | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/components/BoardManager.tsx b/src/components/BoardManager.tsx index ed8ced0..7e2efb9 100644 --- a/src/components/BoardManager.tsx +++ b/src/components/BoardManager.tsx @@ -259,6 +259,8 @@ const resolveSqlTemplate = (sql: string) => { .join(formatIso(at(-30))) } +const trimSqlTailSemicolon = (sql: string) => sql.trimEnd().replace(/;+$/, "") + const parseNumber = (value: unknown): number | undefined => { if (typeof value === "number" && Number.isFinite(value)) return value if (typeof value === "string" && value.trim() !== "") { @@ -1258,7 +1260,15 @@ ORDER BY reward_points DESC, score DESC`, title={t("board.sqlEditorTitle")} open={Boolean(editingList)} onCancel={() => setEditingListId(null)} - onOk={() => setEditingListId(null)} + onOk={() => { + if (editingList && activeBoard && canManage) { + const nextSql = trimSqlTailSemicolon(editingList.sql) + if (nextSql !== editingList.sql) { + updateList(activeBoard.id, editingList.id, { sql: nextSql }) + } + } + setEditingListId(null) + }} okText={t("common.confirm")} cancelText={t("common.cancel")} width={860}