ledger revanced

This commit is contained in:
NextJS
2026-05-11 06:34:15 +00:00
parent 6d2050cd24
commit 49d9f31182
13 changed files with 1719 additions and 302 deletions
+38 -3
View File
@@ -12,6 +12,8 @@ import {
} from "@/lib/dashboard-search-url";
import type { MatchmakerLogSource } from "@/lib/matchmaker-log-source";
import type { DbMatch, DbTransaction, DbUser } from "@/types/database";
import type { SerializedLedgerGlobalSummary } from "@/lib/ledger-integrity";
import type { LedgerSortKey, LedgerSortOrder } from "@/lib/ledger-table-view";
/** Bigint columns often arrive as strings from PostgREST / JSON. */
function matchHasRecordedWinner(winnerId: DbMatch["winner_id"]): boolean {
@@ -59,8 +61,21 @@ type Props = {
matches: DbMatch[];
usersError: string | null;
matchesError: string | null;
transactions: DbTransaction[];
transactionsError: string | null;
/** Ledger tab: full-database totals + user nets (server scan). */
ledgerGlobalSummary: SerializedLedgerGlobalSummary | null;
/** Ledger tab: rows in the selected UTC date range (full set for audits). */
ledgerTransactionsFiltered: DbTransaction[];
/** Ledger tab: current page of the ledger table (sorted + paginated). */
ledgerTableRows: DbTransaction[];
ledgerTotalRowsInRange: number;
ledgerPage: number;
ledgerPageSize: number;
ledgerTotalPages: number;
ledgerSort: LedgerSortKey;
ledgerOrder: LedgerSortOrder;
ledgerFrom: string;
ledgerTo: string;
statsBundle: DashboardStatsBundle | null;
/** From server `searchParams` so SSR and client markup match (do not use `useSearchParams` here). */
tab: AdminDashboardTab;
@@ -99,8 +114,18 @@ export function AdminDashboard({
matches,
usersError,
matchesError,
transactions,
transactionsError,
ledgerGlobalSummary,
ledgerTransactionsFiltered,
ledgerTableRows,
ledgerTotalRowsInRange,
ledgerPage,
ledgerPageSize,
ledgerTotalPages,
ledgerSort,
ledgerOrder,
ledgerFrom,
ledgerTo,
statsBundle,
tab,
highlightId,
@@ -503,11 +528,21 @@ export function AdminDashboard({
</section>
) : tab === "ledger" ? (
<AdminLedger
transactions={transactions}
ledgerGlobalSummary={ledgerGlobalSummary}
transactionsScoped={ledgerTransactionsFiltered}
ledgerTableRows={ledgerTableRows}
ledgerTotalRowsInRange={ledgerTotalRowsInRange}
ledgerPage={ledgerPage}
ledgerPageSize={ledgerPageSize}
ledgerTotalPages={ledgerTotalPages}
ledgerSort={ledgerSort}
ledgerOrder={ledgerOrder}
users={users}
error={transactionsError}
highlightId={highlightId}
participantRaw={participantRaw}
ledgerFrom={ledgerFrom}
ledgerTo={ledgerTo}
/>
) : (
<section className="space-y-3">