Skip to content

Commit

Permalink
Update known completed transactions
Browse files Browse the repository at this point in the history
  • Loading branch information
sviderock committed Oct 15, 2024
1 parent d4b5bf2 commit bfcc853
Show file tree
Hide file tree
Showing 4 changed files with 54 additions and 2 deletions.
7 changes: 7 additions & 0 deletions src/transactions/actions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -111,3 +111,10 @@ export const removeDuplicatedStandByTransactions = (
type: Actions.REMOVE_DUPLICATED_STANDBY_TRANSACTIONS,
newPageTransactions,
})

export const updateKnownCompletedTransactionsHashes = (
newPageTransactions: TokenTransaction[]
): UpdateKnownCompletedTransactionsHashesAction => ({
type: Actions.UPDATE_KNOWN_COMPLETED_TRANSACTIONS_HASHES,
newPageTransactions,
})
33 changes: 33 additions & 0 deletions src/transactions/feed/TransactionFeedV2.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -538,4 +538,37 @@ describe('TransactionFeedV2', () => {
)
expect(vibrateSuccess).toHaveBeenCalledTimes(1)
})

it('should update known completed transactions when there is a new completed transaction', async () => {
const mockedTransaction = mockTransaction()
mockFetch.mockResponse(typedResponse({ transactions: [mockedTransaction] }))

const { store, ...tree } = renderScreen({
transactions: { knownCompletedTransactionsHashes: ['0x02'] },
})

await waitFor(() => {
expect(tree.getByTestId('TransactionList').props.data[0].data.length).toBe(1)
expect(store.getState().transactions.knownCompletedTransactionsHashes).toStrictEqual([
'0x02',
mockedTransaction.transactionHash,
])
})
})

it('should not update known completed transactions when there are no new completed transaction', async () => {
const mockedTransaction = mockTransaction()
mockFetch.mockResponse(typedResponse({ transactions: [mockedTransaction] }))

const { store, ...tree } = renderScreen({
transactions: { knownCompletedTransactionsHashes: [mockedTransaction.transactionHash] },
})

await waitFor(() => {
expect(tree.getByTestId('TransactionList').props.data[0].data.length).toBe(1)
expect(store.getState().transactions.knownCompletedTransactionsHashes).toStrictEqual([
mockedTransaction.transactionHash,
])
})
})
})
14 changes: 13 additions & 1 deletion src/transactions/feed/TransactionFeedV2.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,10 @@ import colors from 'src/styles/colors'
import { vibrateSuccess } from 'src/styles/hapticFeedback'
import { Spacing } from 'src/styles/styles'
import NoActivity from 'src/transactions/NoActivity'
import { removeDuplicatedStandByTransactions } from 'src/transactions/actions'
import {
removeDuplicatedStandByTransactions,
updateKnownCompletedTransactionsHashes,
} from 'src/transactions/actions'
import { useTransactionFeedV2Query } from 'src/transactions/api'
import EarnFeedItem from 'src/transactions/feed/EarnFeedItem'
import NftFeedItem from 'src/transactions/feed/NftFeedItem'
Expand Down Expand Up @@ -377,6 +380,15 @@ export default function TransactionFeedV2() {
[data?.transactions, knownCompletedTransactionsHashes]
)

useEffect(
function updateKnownCompletedTransactions() {
if (data?.transactions.length) {
dispatch(updateKnownCompletedTransactionsHashes(data.transactions))
}
},
[data?.transactions]
)

const confirmedTransactions = useMemo(() => {
const flattenedPages = Object.values(paginatedData).flat()
const deduplicatedTransactions = deduplicateTransactions(flattenedPages)
Expand Down
2 changes: 1 addition & 1 deletion src/transactions/reducer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -191,8 +191,8 @@ export const reducer = (

const newKnownHashes = [
...new Set([
...completedTransactionsFromNewPage,
...state.knownCompletedTransactionsHashes,
...completedTransactionsFromNewPage,
]),
]
return {
Expand Down

0 comments on commit bfcc853

Please sign in to comment.