Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/dark-jobs-rescue.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'explorer': minor
---

Unconfirmed transactions are now searchable and denoted by a badge. Closes https://github.com/SiaFoundation/explored/issues/291.
38 changes: 24 additions & 14 deletions apps/explorer/app/(main)/tx/[id]/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -57,20 +57,26 @@ export default async function Page({ params }: ExplorerPageProps) {
throw transactionError
}

const { data: parentBlock } = await explored.blockByID({
params: { id: transactionChainIndices[0].id },
})
// Unconfirmed transactions don't have a block, so we need to
// be able to succeed without it.
const { data: parentBlock } = transactionChainIndices?.[0]
? await explored.blockByID({
params: { id: transactionChainIndices[0].id },
})
: { data: undefined }
return (
<Transaction
txType={getV1TransactionType(transaction)}
transaction={transaction}
transactionHeaderData={{
id: stripPrefix(transaction.id),
blockHeight: transactionChainIndices[0].height,
confirmations:
currentTip.height - transactionChainIndices[0].height + 1,
timestamp: parentBlock.timestamp,
blockHeight: transactionChainIndices?.[0]?.height,
confirmations: transactionChainIndices?.[0]
? currentTip.height - transactionChainIndices[0].height + 1
: undefined,
timestamp: parentBlock?.timestamp,
version: 'v1',
unconfirmed: transaction.unconfirmed,
}}
/>
)
Expand All @@ -90,9 +96,11 @@ export default async function Page({ params }: ExplorerPageProps) {
throw transactionError
}

const { data: parentBlock } = await explored.blockByID({
params: { id: transactionChainIndices[0].id },
})
const { data: parentBlock } = transactionChainIndices?.[0]
? await explored.blockByID({
params: { id: transactionChainIndices[0].id },
})
: { data: undefined }
return (
<Transaction
txType={getV2TransactionType(
Expand All @@ -101,11 +109,13 @@ export default async function Page({ params }: ExplorerPageProps) {
transaction={transaction}
transactionHeaderData={{
id: stripPrefix(transaction.id),
blockHeight: transactionChainIndices[0].height,
confirmations:
currentTip.height - transactionChainIndices[0].height + 1,
timestamp: parentBlock.timestamp,
blockHeight: transactionChainIndices?.[0]?.height,
confirmations: transactionChainIndices?.[0]
? currentTip.height - transactionChainIndices[0].height + 1
: undefined,
timestamp: parentBlock?.timestamp,
version: 'v2',
unconfirmed: transaction.unconfirmed,
}}
/>
)
Expand Down
13 changes: 8 additions & 5 deletions apps/explorer/components/Transaction/TransactionHeader.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,11 @@ import LoadingTimestamp from '../LoadingTimestamp'

export type TransactionHeaderData = {
id: string
blockHeight: number
confirmations: number
timestamp: string
blockHeight?: number
confirmations?: number
timestamp?: string
version: 'v1' | 'v2'
unconfirmed?: boolean
}

type Props = {
Expand All @@ -23,7 +24,7 @@ export function TransactionHeader({
transactionHeaderData,
txType,
}: Props) {
const { id, timestamp, blockHeight, confirmations, version } =
const { id, timestamp, blockHeight, confirmations, version, unconfirmed } =
transactionHeaderData
return (
<div className="flex flex-col gap-4">
Expand All @@ -49,6 +50,7 @@ export function TransactionHeader({
</div>
<div className="flex flex-wrap justify-between gap-2">
<div className="flex flex-wrap gap-2">
{unconfirmed && <Badge variant="amber">Unconfirmed</Badge>}
{txType && <Badge variant="accent">{getTxTypeLabel(txType)}</Badge>}
</div>
<div className="flex flex-wrap gap-2">
Expand All @@ -60,7 +62,8 @@ export function TransactionHeader({
</Tooltip>
<div className="">|</div>
<div className="">
{confirmations >= 72 ? '72+' : confirmations} confirmations
{confirmations && confirmations >= 72 ? '72+' : confirmations}{' '}
confirmations
</div>
</div>
</Badge>
Expand Down
Loading