@@ -26,54 +26,45 @@ import { syncedRoundAtom } from './synced-round'
2626
2727const maxBlocksToDisplay = 5
2828
29- const createLatestBlockSummariesAtom = ( ) => {
30- const latestBlockSummariesAtom = atom < BlockSummary [ ] > ( [ ] )
31- const refreshLatestBlockSummariesEffect = atomEffect ( ( get , set ) => {
32- const syncedRound = get ( syncedRoundAtom )
33- if ( ! syncedRound ) {
34- return
35- }
36-
37- const blockResults = get . peek ( blockResultsAtom )
38- const transactionResults = get . peek ( transactionResultsAtom )
39-
40- ; ( async ( ) => {
41- const latestBlockSummaries = (
42- await Promise . all (
43- Array . from ( { length : maxBlocksToDisplay } , async ( _ , i ) => {
44- const round = syncedRound - i
45- const blockAtom = blockResults . get ( round )
46-
47- if ( blockAtom ) {
48- const block = await get ( blockAtom )
49- const transactionSummaries = await Promise . all (
50- block . transactionIds . map ( async ( transactionId ) => {
51- const transactionResult = await get . peek ( transactionResults . get ( transactionId ) ! )
29+ export const latestBlockSummariesAtom = atom < BlockSummary [ ] > ( [ ] )
30+ const refreshLatestBlockSummariesEffect = atomEffect ( ( get , set ) => {
31+ const syncedRound = get ( syncedRoundAtom )
32+ if ( ! syncedRound ) {
33+ return
34+ }
5235
53- return asTransactionSummary ( transactionResult )
54- } )
55- )
36+ const blockResults = get . peek ( blockResultsAtom )
37+ const transactionResults = get . peek ( transactionResultsAtom )
5638
57- return asBlockSummary ( block , transactionSummaries )
58- }
59- } )
60- )
61- ) . filter ( isDefined )
39+ ; ( async ( ) => {
40+ const latestBlockSummaries = (
41+ await Promise . all (
42+ Array . from ( { length : maxBlocksToDisplay } , async ( _ , i ) => {
43+ const round = syncedRound - i
44+ const blockAtom = blockResults . get ( round )
6245
63- set ( latestBlockSummariesAtom , latestBlockSummaries )
64- } ) ( )
65- } )
46+ if ( blockAtom ) {
47+ const block = await get ( blockAtom )
48+ const transactionSummaries = await Promise . all (
49+ block . transactionIds . map ( async ( transactionId ) => {
50+ const transactionResult = await get . peek ( transactionResults . get ( transactionId ) ! )
6651
67- return atom ( ( get ) => {
68- get ( refreshLatestBlockSummariesEffect )
52+ return asTransactionSummary ( transactionResult )
53+ } )
54+ )
6955
70- return get ( latestBlockSummariesAtom )
71- } )
72- }
56+ return asBlockSummary ( block , transactionSummaries )
57+ }
58+ } )
59+ )
60+ ) . filter ( isDefined )
7361
74- export const latestBlockSummariesAtom = createLatestBlockSummariesAtom ( )
62+ set ( latestBlockSummariesAtom , latestBlockSummaries )
63+ } ) ( )
64+ } )
7565
7666export const useLatestBlockSummaries = ( ) => {
67+ useAtom ( refreshLatestBlockSummariesEffect )
7768 return useAtomValue ( latestBlockSummariesAtom )
7869}
7970
0 commit comments