diff --git a/apps/web/src/app/admin/page.tsx b/apps/web/src/app/admin/page.tsx index 52106a4d..1da16bf7 100644 --- a/apps/web/src/app/admin/page.tsx +++ b/apps/web/src/app/admin/page.tsx @@ -181,9 +181,9 @@ export default async function AdminPage() { Chiến dịch đã duyệt chờ tài khoản nhận{waiting ? ` (${waiting.length})` : ""}

- Chiến dịch từ thiện đã duyệt nhưng tài khoản nhận tiền không còn dùng được, nên hệ thống không tự mở. Chiến - dịch tự mở nếu tài khoản dùng được trở lại; nếu không, hãy yêu cầu chỉnh sửa để người tổ chức nhả tài khoản - cũ, gắn tài khoản khác rồi gửi duyệt lại. + Chiến dịch (từ thiện hoặc dự án có quà tặng) đã duyệt nhưng tài khoản nhận tiền không còn dùng được, nên hệ + thống không tự mở. Chiến dịch tự mở nếu tài khoản dùng được trở lại; nếu không, hãy yêu cầu chỉnh sửa để người + tổ chức nhả tài khoản cũ, gắn tài khoản khác rồi gửi duyệt lại.

{waiting === null ? (

Chưa tải được danh sách này. Hãy tải lại trang sau.

@@ -201,7 +201,8 @@ export default async function AdminPage() {
  • -

    {campaign.title}

    + +

    {campaign.title}

    {accountProblemLabel(campaign.account_problem)}

    diff --git a/apps/web/src/app/me/accounts/actions.test.ts b/apps/web/src/app/me/accounts/actions.test.ts index eb0fc1aa..f94151ea 100644 --- a/apps/web/src/app/me/accounts/actions.test.ts +++ b/apps/web/src/app/me/accounts/actions.test.ts @@ -306,13 +306,14 @@ describe("releaseAccount", () => { expect(result?.message).toContain("Giao dịch đã vào tài khoản là lịch sử tiền") }) - it("does not ask for a back project sent back for changes", async () => { + it("releases the account of a back project sent back for changes too (DOS/Give#85)", async () => { state.userHandler = bindReads({ acc: account({ bindings: [bound] }), camp: campaign({ status: "changes_requested", type: "back" }), }) - expect((await releaseAccount(ACCOUNT, null, new FormData()))?.ok).toBe(false) - expect(state.serviceCalls).toHaveLength(0) + state.serviceHandler = () => ({ data: "b" }) + expect((await releaseAccount(ACCOUNT, null, new FormData()))?.ok).toBe(true) + expect(state.serviceCalls.some((c) => c.target === "rpc:release_account_binding")).toBe(true) }) it("does not ask while the campaign is in review or live", async () => { diff --git a/apps/web/src/app/me/accounts/page.tsx b/apps/web/src/app/me/accounts/page.tsx index 6dee2225..cc8b8b28 100644 --- a/apps/web/src/app/me/accounts/page.tsx +++ b/apps/web/src/app/me/accounts/page.tsx @@ -268,9 +268,9 @@ function AccountItem({ {boundTitle(holder.campaign_id)} {" "} - từ ngày {formatDate(holder.bound_at)}. Khi chiến dịch còn là bản nháp, hoặc là chiến dịch từ thiện được yêu - cầu chỉnh sửa mà tài khoản chưa nhận giao dịch nào, bạn có thể nhả tài khoản để đổi tài khoản khác; ngoài ra, - sau khi gửi duyệt, tài khoản chỉ được nhả khi chiến dịch đó đã xong hẳn phần tiền. + từ ngày {formatDate(holder.bound_at)}. Khi chiến dịch còn là bản nháp, hoặc được yêu cầu chỉnh sửa mà tài + khoản chưa nhận giao dịch nào, bạn có thể nhả tài khoản để đổi tài khoản khác; ngoài ra, sau khi gửi duyệt, + tài khoản chỉ được nhả khi chiến dịch đó đã xong hẳn phần tiền. {(account.verification_status === "disabled" || unusable) && ( {" "} @@ -301,7 +301,7 @@ function AccountItem({ ) : (