Skip to content

Commit

Permalink
fix: some small fixes (#72)
Browse files Browse the repository at this point in the history
* chore: tweak latest blocks jotai config
* fix: handle bad routes
* fix: bug in keyreg transaction mapping
  • Loading branch information
neilcampbell authored May 29, 2024
1 parent ba6907f commit 931c888
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 42 deletions.
71 changes: 31 additions & 40 deletions src/features/blocks/data/latest-blocks.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,54 +26,45 @@ import { syncedRoundAtom } from './synced-round'

const maxBlocksToDisplay = 5

const createLatestBlockSummariesAtom = () => {
const latestBlockSummariesAtom = atom<BlockSummary[]>([])
const refreshLatestBlockSummariesEffect = atomEffect((get, set) => {
const syncedRound = get(syncedRoundAtom)
if (!syncedRound) {
return
}

const blockResults = get.peek(blockResultsAtom)
const transactionResults = get.peek(transactionResultsAtom)

;(async () => {
const latestBlockSummaries = (
await Promise.all(
Array.from({ length: maxBlocksToDisplay }, async (_, i) => {
const round = syncedRound - i
const blockAtom = blockResults.get(round)

if (blockAtom) {
const block = await get(blockAtom)
const transactionSummaries = await Promise.all(
block.transactionIds.map(async (transactionId) => {
const transactionResult = await get.peek(transactionResults.get(transactionId)!)
export const latestBlockSummariesAtom = atom<BlockSummary[]>([])
const refreshLatestBlockSummariesEffect = atomEffect((get, set) => {
const syncedRound = get(syncedRoundAtom)
if (!syncedRound) {
return
}

return asTransactionSummary(transactionResult)
})
)
const blockResults = get.peek(blockResultsAtom)
const transactionResults = get.peek(transactionResultsAtom)

return asBlockSummary(block, transactionSummaries)
}
})
)
).filter(isDefined)
;(async () => {
const latestBlockSummaries = (
await Promise.all(
Array.from({ length: maxBlocksToDisplay }, async (_, i) => {
const round = syncedRound - i
const blockAtom = blockResults.get(round)

set(latestBlockSummariesAtom, latestBlockSummaries)
})()
})
if (blockAtom) {
const block = await get(blockAtom)
const transactionSummaries = await Promise.all(
block.transactionIds.map(async (transactionId) => {
const transactionResult = await get.peek(transactionResults.get(transactionId)!)

return atom((get) => {
get(refreshLatestBlockSummariesEffect)
return asTransactionSummary(transactionResult)
})
)

return get(latestBlockSummariesAtom)
})
}
return asBlockSummary(block, transactionSummaries)
}
})
)
).filter(isDefined)

export const latestBlockSummariesAtom = createLatestBlockSummariesAtom()
set(latestBlockSummariesAtom, latestBlockSummaries)
})()
})

export const useLatestBlockSummaries = () => {
useAtom(refreshLatestBlockSummariesEffect)
return useAtomValue(latestBlockSummariesAtom)
}

Expand Down
2 changes: 1 addition & 1 deletion src/features/transactions/mappers/transaction-mappers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ export const asTransactionSummary = (transactionResult: TransactionResult): Tran
}
}
case algosdk.TransactionType.keyreg: {
invariant(transactionResult['key-reg-transaction'], 'key-reg-transaction is not set')
invariant(transactionResult['keyreg-transaction'], 'keyreg-transaction is not set')
return {
...common,
type: TransactionType.KeyReg,
Expand Down
6 changes: 5 additions & 1 deletion src/utils/error.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
export const asError = (error: unknown) => {
return error instanceof Error ? error : new Error(String(error))
return error instanceof Error
? error
: error instanceof Object && 'error' in error && error.error instanceof Error
? error.error
: new Error(String(error))
}

export const is404 = (error: Error) => 'status' in error && error.status === 404

0 comments on commit 931c888

Please sign in to comment.