What this surface shows
This route shows one casino transaction selected by the legacy transactionId URL segment.
At runtime the page does not treat that segment as the generic transaction id. It passes the value into useTransactions({ casinoTransactionId }), so the route behaves as a detail view keyed by casinoTransactionId.
It is a read-only inspection page designed for cases where the operator needs a single transaction in a fuller layout than the list row can provide.
How to read it
The page fetches the transaction by casinoTransactionId through the same admin list source used by the casino-transactions grid and then renders the first returned row as a key-value summary.
When casinoTransactionId is present, the page does not send the normal startDate and endDate list filters. The source applies an exact casino_transaction_id filter to the standard casino transaction query.
The detail view is strongest for:
- checking the exact transaction id
- checking the internal
casinoTransactionIdversus the storedtransactionId - confirming player email
- confirming the game and provider
- confirming the timestamps rendered by the shared key-value component
- reading the non-null payload keys returned for that single row
Known caveats
- The page fetches through the same casino transaction hook used by the list, but with
casinoTransactionIdpinned. - This is a list-query shim, not a dedicated detail endpoint. It uses the same casino transaction list source with an exact id filter.
- The hook omits list date filters when
casinoTransactionIdis present, so the exact id lookup is not constrained by the default casino transaction list date range. - The route has no dedicated action bar, modal stack, or edit flow. It is a read-only detail page that relies on standard module navigation to leave the screen.
TransactionGamingDetailsreturnsnullwhile the query is loading and also returnsnullwhen the filtered query comes back empty. There is no dedicated empty-state card on this route.- The visible field inventory depends on the transaction object returned by the hook.
KeyValueDisplayremovesnullandundefinedkeys before rendering. - The visible sections are generated by page heuristics, not by a source-authored display schema. Non-null keys are grouped into
Identifiers,Financial Details,Dates & Timestamps,Status Information, andAdditional Details. - The dedicated detail page is not the same renderer as the inline expansion panel in the casino-transactions list. The list uses a bespoke card layout with UTC wording and explicit status mapping, while this route shows raw payload keys through
KeyValueDisplay. KeyValueDisplayformatscreatedAtandupdatedAtin the browser or workstation timezone because no explicit timezone is passed intogetFormattedDateTime().- The
Statusrow on this route uses the genericKeyValueDisplaystatus formatter. Numeric payload values such as0/1/2/3can therefore appear more raw than the humanizedPending / Complete / Failed / Rollbacklabels shown in the list row. - The numeric sanitizer replaces non-finite numeric sentinels such as
NaNandInfinitywithnull; those null values are then hidden byKeyValueDisplay.
The exact id filter, row sanitizer, and key-value rendering have been traced. Field presence is still payload-dependent because the page renders only non-null keys returned by the list-query payload and does not own a separate empty-state or label-mapping layer.