diff --git a/src/transaction/hooks/useGetTransactionStatus.test.tsx b/src/transaction/hooks/useGetTransactionStatus.test.tsx deleted file mode 100644 index 8f169914069..00000000000 --- a/src/transaction/hooks/useGetTransactionStatus.test.tsx +++ /dev/null @@ -1,92 +0,0 @@ -import { renderHook } from '@testing-library/react'; -import { beforeEach, describe, expect, it, vi } from 'vitest'; -import { useChainId } from 'wagmi'; -import { useShowCallsStatus } from 'wagmi/experimental'; -import { useTransactionContext } from '../components/TransactionProvider'; -import { useGetTransactionStatus } from './useGetTransactionStatus'; - -vi.mock('../components/TransactionProvider', () => ({ - useTransactionContext: vi.fn(), -})); - -vi.mock('wagmi', () => ({ - useChainId: vi.fn(), -})); - -vi.mock('wagmi/experimental', () => ({ - useShowCallsStatus: vi.fn(), -})); - -describe('useGetTransactionStatus', () => { - beforeEach(() => { - (useChainId as vi.Mock).mockReturnValue(123); - (useShowCallsStatus as vi.Mock).mockReturnValue({ - showCallsStatus: vi.fn(), - }); - }); - it('should return correct status and actionElement when transaction is pending', () => { - (useTransactionContext as vi.Mock).mockReturnValue({ - statusWriteContract: 'pending', - }); - - const { result } = renderHook(() => useGetTransactionStatus()); - - expect(result.current.label).toBe('Confirm in wallet.'); - }); - - it('should return correct status and actionElement when transaction hash exists', () => { - (useTransactionContext as vi.Mock).mockReturnValue({ - transactionHash: 'ab123', - }); - - const { result } = renderHook(() => useGetTransactionStatus()); - - expect(result.current.label).toBe('Transaction in progress...'); - expect(result.current.actionElement).not.toBeNull(); - }); - - it('should return correct status and actionElement when transaction id exists', () => { - (useTransactionContext as vi.Mock).mockReturnValue({ - transactionId: 'ab123', - }); - - const { result } = renderHook(() => useGetTransactionStatus()); - - expect(result.current.label).toBe('Transaction in progress...'); - expect(result.current.actionElement).not.toBeNull(); - }); - - it('should return correct status and actionElement when receipt exists', () => { - (useTransactionContext as vi.Mock).mockReturnValue({ - receipt: 'receipt', - transactionHash: '123', - }); - - const { result } = renderHook(() => useGetTransactionStatus()); - - expect(result.current.label).toBe('Successful!'); - expect(result.current.actionElement).toBeNull(); - }); - - it('should return correct status and actionElement when error occurs', () => { - (useTransactionContext as vi.Mock).mockReturnValue({ - errorMessage: 'error', - }); - - const { result } = renderHook(() => useGetTransactionStatus()); - - expect(result.current.label).toBe('error'); - expect(result.current.labelClassName).toBe('text-ock-error'); - }); - - it('should return correct status and actionElement when no status available', () => { - (useTransactionContext as vi.Mock).mockReturnValue({ - errorMessage: '', - }); - - const { result } = renderHook(() => useGetTransactionStatus()); - - expect(result.current.label).toBe(''); - expect(result.current.actionElement).toBeNull(); - }); -}); diff --git a/src/transaction/hooks/useGetTransactionStatus.tsx b/src/transaction/hooks/useGetTransactionStatus.tsx deleted file mode 100644 index c23bb53adce..00000000000 --- a/src/transaction/hooks/useGetTransactionStatus.tsx +++ /dev/null @@ -1,92 +0,0 @@ -import { useMemo } from 'react'; -import type { ReactNode } from 'react'; -import { useChainId } from 'wagmi'; -import { useShowCallsStatus } from 'wagmi/experimental'; -import { getChainExplorer } from '../../network/getChainExplorer'; -import { cn, color, text } from '../../styles/theme'; -import { useTransactionContext } from '../components/TransactionProvider'; - -export function useGetTransactionStatus() { - const { - chainId, - errorMessage, - isLoading, - receipt, - statusWriteContract, - statusWriteContracts, - transactionHash, - transactionId, - } = useTransactionContext(); - const accountChainId = chainId ?? useChainId(); - const isPending = - statusWriteContract === 'pending' || statusWriteContracts === 'pending'; - const isInProgress = isLoading || !!transactionId || !!transactionHash; - - const { showCallsStatus } = useShowCallsStatus(); - - return useMemo(() => { - const chainExplorer = getChainExplorer(accountChainId); - - let actionElement: ReactNode = null; - let label = ''; - let labelClassName: string = color.foregroundMuted; - - if (isPending) { - label = 'Confirm in wallet.'; - } - - if (isInProgress) { - label = 'Transaction in progress...'; - } - - // EOA will have txn hash - if (transactionHash) { - actionElement = ( - - - View transaction - - - ); - } - - // SW will have txn id - if (transactionId) { - actionElement = ( - - ); - } - - if (receipt) { - label = 'Successful!'; - actionElement = null; - } - - if (errorMessage) { - label = errorMessage; - labelClassName = color.error; - } - - return { actionElement, label, labelClassName }; - }, [ - accountChainId, - errorMessage, - isInProgress, - isPending, - receipt, - showCallsStatus, - transactionHash, - transactionId, - ]); -} diff --git a/src/transaction/hooks/useGetTransactionToast.test.tsx b/src/transaction/hooks/useGetTransactionToast.test.tsx deleted file mode 100644 index 1d4138f45fa..00000000000 --- a/src/transaction/hooks/useGetTransactionToast.test.tsx +++ /dev/null @@ -1,92 +0,0 @@ -import { renderHook } from '@testing-library/react'; -import { beforeEach, describe, expect, it, vi } from 'vitest'; -import { useChainId } from 'wagmi'; -import { useShowCallsStatus } from 'wagmi/experimental'; -import { useTransactionContext } from '../components/TransactionProvider'; -import { useGetTransactionToast } from './useGetTransactionToast'; - -vi.mock('../components/TransactionProvider', () => ({ - useTransactionContext: vi.fn(), -})); - -vi.mock('wagmi', () => ({ - useChainId: vi.fn(), -})); - -vi.mock('wagmi/experimental', () => ({ - useShowCallsStatus: vi.fn(), -})); - -describe('useGetTransactionToast', () => { - beforeEach(() => { - (useChainId as vi.Mock).mockReturnValue(123); - (useShowCallsStatus as vi.Mock).mockReturnValue({ - showCallsStatus: vi.fn(), - }); - }); - it('should return correct toast and actionElement when transaction is loading', () => { - (useTransactionContext as vi.Mock).mockReturnValue({ - isLoading: true, - }); - - const { result } = renderHook(() => useGetTransactionToast()); - - expect(result.current.label).toBe('Transaction in progress'); - }); - - it('should return correct toast and actionElement when receipt exists', () => { - (useTransactionContext as vi.Mock).mockReturnValue({ - receipt: 'receipt', - transactionHash: '123', - }); - - const { result } = renderHook(() => useGetTransactionToast()); - - expect(result.current.label).toBe('Successful'); - expect(result.current.actionElement).not.toBeNull(); - }); - - it('should return correct status and actionElement when transaction id exists', () => { - (useTransactionContext as vi.Mock).mockReturnValue({ - transactionId: 'ab123', - }); - - const { result } = renderHook(() => useGetTransactionToast()); - - expect(result.current.label).toBe('Transaction in progress'); - expect(result.current.actionElement).not.toBeNull(); - }); - - it('should return correct status and actionElement when transaction hash exists', () => { - (useTransactionContext as vi.Mock).mockReturnValue({ - transactionHash: 'ab123', - }); - - const { result } = renderHook(() => useGetTransactionToast()); - - expect(result.current.label).toBe('Transaction in progress'); - expect(result.current.actionElement).not.toBeNull(); - }); - - it('should return correct toast and actionElement when error occurs', () => { - (useTransactionContext as vi.Mock).mockReturnValue({ - errorMessage: 'error', - }); - - const { result } = renderHook(() => useGetTransactionToast()); - - expect(result.current.label).toBe('Something went wrong'); - expect(result.current.actionElement).not.toBeNull(); - }); - - it('should return correct toast and actionElement when no status available', () => { - (useTransactionContext as vi.Mock).mockReturnValue({ - errorMessage: '', - }); - - const { result } = renderHook(() => useGetTransactionToast()); - - expect(result.current.label).toBe(''); - expect(result.current.actionElement).toBeNull(); - }); -}); diff --git a/src/transaction/hooks/useGetTransactionToast.tsx b/src/transaction/hooks/useGetTransactionToast.tsx deleted file mode 100644 index 65905665370..00000000000 --- a/src/transaction/hooks/useGetTransactionToast.tsx +++ /dev/null @@ -1,91 +0,0 @@ -import { useMemo } from 'react'; -import type { ReactNode } from 'react'; -import { useChainId } from 'wagmi'; -import { useShowCallsStatus } from 'wagmi/experimental'; -import { Spinner } from '../../internal/components/Spinner'; -import { errorSvg } from '../../internal/svg/errorSvg'; -import { successSvg } from '../../internal/svg/successSvg'; -import { getChainExplorer } from '../../network/getChainExplorer'; -import { cn, color, text } from '../../styles/theme'; -import { useTransactionContext } from '../components/TransactionProvider'; - -export function useGetTransactionToast() { - const { - chainId, - errorMessage, - isLoading, - onSubmit, - receipt, - transactionHash, - transactionId, - } = useTransactionContext(); - const accountChainId = chainId ?? useChainId(); - - const isInProgress = isLoading || !!transactionId || !!transactionHash; - - const { showCallsStatus } = useShowCallsStatus(); - - return useMemo(() => { - const chainExplorer = getChainExplorer(accountChainId); - - let actionElement: ReactNode = null; - let label = ''; - let icon: ReactNode = null; - - if (isInProgress) { - icon = ; - label = 'Transaction in progress'; - } - // EOA will have txn hash - if (transactionHash) { - actionElement = ( - - - View transaction - - - ); - } - // SW will have txn id - if (transactionId) { - actionElement = ( - - ); - } - if (receipt) { - icon = successSvg; - label = 'Successful'; - } - if (errorMessage) { - actionElement = ( - - ); - icon = errorSvg; - label = 'Something went wrong'; - } - - return { actionElement, icon, label }; - }, [ - accountChainId, - errorMessage, - isInProgress, - onSubmit, - receipt, - showCallsStatus, - transactionHash, - transactionId, - ]); -}