fix(panel): transaction types showing wrong sign for trivia, trades, etc.
Some checks failed
Deploy to Production / test (push) Failing after 32s

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) <noreply@anthropic.com>
This commit is contained in:
syntaxbullet
2026-04-05 16:25:25 +02:00
parent e3c49effdb
commit 451fb206a6

View File

@@ -36,24 +36,25 @@ interface TransactionsResponse {
// Constants // Constants
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
const TRANSACTION_TYPES = [ const TYPE_CONFIG: Record<string, { label: string; color: string; sign: "+" | "-" }> = {
"DAILY_REWARD",
"TRANSFER_IN",
"TRANSFER_OUT",
"LOOTDROP_CLAIM",
"SHOP_BUY",
"QUEST_REWARD",
] as const;
const TYPE_CONFIG: Record<string, { label: string; color: string; sign: "+" | "-" | null }> = {
DAILY_REWARD: { label: "Daily Reward", color: "bg-green-500/20 text-green-400", sign: "+" }, 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_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: "-" }, 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: "+" }, 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: "-" }, 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: "+" }, 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]; const PAGE_SIZES = [25, 50, 100];
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
@@ -77,7 +78,7 @@ function formatDate(iso: string): string {
} }
function getTypeConfig(type: 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 { function isPositive(type: string): boolean {