From 451fb206a69b0e99100a489073cd7fd59767a931 Mon Sep 17 00:00:00 2001 From: syntaxbullet Date: Sun, 5 Apr 2026 16:25:25 +0200 Subject: [PATCH] fix(panel): transaction types showing wrong sign for trivia, trades, etc. TYPE_CONFIG only had 6 of 14 transaction types. Missing types fell back to sign: null which rendered as negative. Added all TransactionType enum values and derived the filter dropdown from TYPE_CONFIG keys. Co-Authored-By: Claude Opus 4.6 (1M context) --- panel/src/pages/Transactions.tsx | 35 ++++++++++++++++---------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/panel/src/pages/Transactions.tsx b/panel/src/pages/Transactions.tsx index 629aa34..0e3172f 100644 --- a/panel/src/pages/Transactions.tsx +++ b/panel/src/pages/Transactions.tsx @@ -36,24 +36,25 @@ interface TransactionsResponse { // Constants // --------------------------------------------------------------------------- -const TRANSACTION_TYPES = [ - "DAILY_REWARD", - "TRANSFER_IN", - "TRANSFER_OUT", - "LOOTDROP_CLAIM", - "SHOP_BUY", - "QUEST_REWARD", -] as const; - -const TYPE_CONFIG: Record = { - DAILY_REWARD: { label: "Daily Reward", color: "bg-green-500/20 text-green-400", sign: "+" }, - TRANSFER_IN: { label: "Transfer In", color: "bg-blue-500/20 text-blue-400", sign: "+" }, - TRANSFER_OUT: { label: "Transfer Out", color: "bg-orange-500/20 text-orange-400", sign: "-" }, - LOOTDROP_CLAIM:{ label: "Lootdrop", color: "bg-purple-500/20 text-purple-400", sign: "+" }, - SHOP_BUY: { label: "Shop Purchase", color: "bg-amber-500/20 text-amber-400", sign: "-" }, - QUEST_REWARD: { label: "Quest Reward", color: "bg-emerald-500/20 text-emerald-400", sign: "+" }, +const TYPE_CONFIG: Record = { + DAILY_REWARD: { label: "Daily Reward", color: "bg-green-500/20 text-green-400", sign: "+" }, + TRANSFER_IN: { label: "Transfer In", color: "bg-blue-500/20 text-blue-400", sign: "+" }, + TRANSFER_OUT: { label: "Transfer Out", color: "bg-orange-500/20 text-orange-400", sign: "-" }, + LOOTDROP_CLAIM: { label: "Lootdrop", color: "bg-purple-500/20 text-purple-400", sign: "+" }, + SHOP_BUY: { label: "Shop Purchase", color: "bg-amber-500/20 text-amber-400", sign: "-" }, + QUEST_REWARD: { label: "Quest Reward", color: "bg-emerald-500/20 text-emerald-400",sign: "+" }, + TRIVIA_WIN: { label: "Trivia Win", color: "bg-teal-500/20 text-teal-400", sign: "+" }, + TRIVIA_ENTRY: { label: "Trivia Entry", color: "bg-teal-500/20 text-teal-400", sign: "-" }, + TRADE_IN: { label: "Trade In", color: "bg-blue-500/20 text-blue-400", sign: "+" }, + TRADE_OUT: { label: "Trade Out", color: "bg-orange-500/20 text-orange-400", sign: "-" }, + PURCHASE: { label: "Purchase", color: "bg-amber-500/20 text-amber-400", sign: "-" }, + ITEM_USE: { label: "Item Use", color: "bg-gray-500/20 text-gray-400", sign: "-" }, + LOOTBOX: { label: "Lootbox", color: "bg-purple-500/20 text-purple-400", sign: "-" }, + EXAM_REWARD: { label: "Exam Reward", color: "bg-emerald-500/20 text-emerald-400",sign: "+" }, }; +const TRANSACTION_TYPES = Object.keys(TYPE_CONFIG); + const PAGE_SIZES = [25, 50, 100]; // --------------------------------------------------------------------------- @@ -77,7 +78,7 @@ function formatDate(iso: string): string { } function getTypeConfig(type: string) { - return TYPE_CONFIG[type] ?? { label: type, color: "bg-gray-500/20 text-gray-400", sign: null }; + return TYPE_CONFIG[type] ?? { label: type, color: "bg-gray-500/20 text-gray-400", sign: "+" }; } function isPositive(type: string): boolean {