Skip to content

Commit

Permalink
Improve UseTransactionParams
Browse files Browse the repository at this point in the history
The config param can only be defined in combination with the safeTxHash param.
  • Loading branch information
tmjssz committed Oct 8, 2024
1 parent 94873dc commit 2d931f4
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 8 deletions.
3 changes: 2 additions & 1 deletion src/hooks/useSafe.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import * as useSignerAddress from '@/hooks/useSignerAddress.js'
import * as useTransaction from '@/hooks/useTransaction.js'
import * as usePendingTransactions from '@/hooks/usePendingTransactions.js'
import * as useTransactions from '@/hooks/useTransactions.js'
import { UseSafeTransactionReturnType } from '@/hooks/useSafeTransaction.js'
import { useSafe } from '@/hooks/useSafe.js'
import { configExistingSafe } from '@test/config.js'
import {
Expand Down Expand Up @@ -250,7 +251,7 @@ describe('useSafe', () => {
useTransactionSpy.mockReturnValue({
data: safeMultisigTransaction,
status: 'success'
})
} as UseSafeTransactionReturnType)

const { result } = await renderUseSafeHook()

Expand Down
19 changes: 12 additions & 7 deletions src/hooks/useTransaction.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,15 @@ import {
import type { ConfigParam, SafeConfig } from '@/types/index.js'
import { useSafeTransaction, UseSafeTransactionReturnType } from './useSafeTransaction.js'

export type UseTransactionParams = ConfigParam<SafeConfig> &
({ safeTxHash: Hash; ethereumTxHash?: never } | { safeTxHash?: never; ethereumTxHash: Hash })
export type UseTransactionParams =
| (ConfigParam<SafeConfig> & { safeTxHash: Hash })
| { ethereumTxHash: Hash }

export type UseTransactionReturnType<Params extends UseTransactionParams> =
Params['safeTxHash'] extends Hash ? UseSafeTransactionReturnType : UseTransactionReturnTypeWagmi
export type UseTransactionReturnType<Params extends UseTransactionParams> = Params extends {
safeTxHash: Hash
}
? UseSafeTransactionReturnType
: UseTransactionReturnTypeWagmi

/**
* Hook to get the status of a specific transaction.
Expand All @@ -23,9 +27,10 @@ export type UseTransactionReturnType<Params extends UseTransactionParams> =
export function useTransaction<Params extends UseTransactionParams>(
params: Params
): UseTransactionReturnType<Params> {
if (params.safeTxHash && isHash(params.safeTxHash)) {
if ('safeTxHash' in params && isHash(params.safeTxHash)) {
return useSafeTransaction(params) as UseTransactionReturnType<Params>
}

return useTransactionWagmi({ hash: params.ethereumTxHash }) as UseTransactionReturnType<Params>
return useTransactionWagmi({
hash: (params as { ethereumTxHash: Hash }).ethereumTxHash
}) as UseTransactionReturnType<Params>
}

0 comments on commit 2d931f4

Please sign in to comment.