diff --git a/src/components/AccountConfirmationModal/index.tsx b/src/components/AccountConfirmationModal/index.tsx index 0de2c2ce..99968104 100644 --- a/src/components/AccountConfirmationModal/index.tsx +++ b/src/components/AccountConfirmationModal/index.tsx @@ -1,6 +1,6 @@ import * as React from "react"; -import { UseModalBehaviour } from "@/hooks/useModalBehaviour"; +import { UseModalBehaviour } from "@/hooks/common/useModalBehaviour"; import BaseConfirmationDialog from "../BaseConfirmationDialog"; diff --git a/src/components/AddressBook/AddressBookItem.tsx b/src/components/AddressBook/AddressBookItem.tsx index 52da29a9..092d9937 100644 --- a/src/components/AddressBook/AddressBookItem.tsx +++ b/src/components/AddressBook/AddressBookItem.tsx @@ -10,9 +10,9 @@ import { ChainExtended } from "@/config/chain"; import { AddressBookInput } from "@/domain/AddressBooks"; import { UseDeleteAddressBookReturn } from "@/hooks/addressBook/useDeleteAddressBook"; import { UseUpdateAddressBook } from "@/hooks/addressBook/useUpdateAddressBook"; +import { useRecentlyClicked } from "@/hooks/common/useRecentlyClicked"; import { useForm } from "@/hooks/useForm"; import useOnClickOutside from "@/hooks/useOnClickOutside"; -import { useRecentlyClicked } from "@/hooks/useRecentlyClicked"; import { getExplorerUrl } from "@/utils/blockchain"; import { notEmpty, onlyAddress } from "@/utils/inputValidation"; diff --git a/src/components/ArgumentForm/inputs/OptionArgument.tsx b/src/components/ArgumentForm/inputs/OptionArgument.tsx index e3128c9c..e410abdb 100644 --- a/src/components/ArgumentForm/inputs/OptionArgument.tsx +++ b/src/components/ArgumentForm/inputs/OptionArgument.tsx @@ -4,7 +4,7 @@ import { OptionalFieldWrapper } from "@/components/OptionalFieldWrapper"; import { usePolkadotContext } from "@/context/usePolkadotContext"; import { ArgumentComponentProps } from "@/domain/substrateInputTypes"; import { OrFalsy } from "@/domain/utilityTsTypes"; -import { useToggle } from "@/hooks/useToggle"; +import { useToggle } from "@/hooks/common/useToggle"; import { getInitValue } from "@/services/substrate/getInitValue"; import { Registry, TypeDef } from "@/services/substrate/types"; diff --git a/src/components/ModalWalletProvider/ConnectButton.tsx b/src/components/ModalWalletProvider/ConnectButton.tsx index 25ba64bd..404be192 100644 --- a/src/components/ModalWalletProvider/ConnectButton.tsx +++ b/src/components/ModalWalletProvider/ConnectButton.tsx @@ -7,9 +7,9 @@ import { StyledConnectButton } from "@/components/ModalWalletProvider/styled"; import { ROUTES } from "@/config/routes"; import { usePolkadotContext } from "@/context/usePolkadotContext"; import { WalletConnectionEvents } from "@/domain/events/WalletConnectionEvents"; +import { useModalBehaviour } from "@/hooks/common/useModalBehaviour"; +import { useRecentlyClicked } from "@/hooks/common/useRecentlyClicked"; import { useEventListenerCallback } from "@/hooks/useEventListenerCallback"; -import { useModalBehaviour } from "@/hooks/useModalBehaviour"; -import { useRecentlyClicked } from "@/hooks/useRecentlyClicked"; import { useGetXsignerSelected } from "@/hooks/xsignerSelected/useGetXsignerSelected"; import { WalletAccount } from "@/services/useink/types"; import { areAddressesEqual } from "@/utils/blockchain"; diff --git a/src/components/MultisigEventListener/index.tsx b/src/components/MultisigEventListener/index.tsx index 2b849b8d..e669b3b1 100644 --- a/src/components/MultisigEventListener/index.tsx +++ b/src/components/MultisigEventListener/index.tsx @@ -4,6 +4,7 @@ import { useEvents, useEventSubscription } from "useink"; import { createToast } from "@/components/AppToastNotification"; import { useLocalDbContext } from "@/context/uselocalDbContext"; +import { LocalMultisigEvents } from "@/domain/events/LocalMultisigEvents"; import { MultisigContractEvents } from "@/domain/events/MultisigContractEvents"; import { useMultisigContractPromise } from "@/hooks/contractPromise/useMultisigContractPromise"; import { useGetXsignerSelected } from "@/hooks/xsignerSelected/useGetXsignerSelected"; @@ -29,6 +30,8 @@ export function MultisigEventListener() { icon: , }); }); + events.length && + document.dispatchEvent(new CustomEvent(LocalMultisigEvents.eventAdded)); }, [events, localMultisigEventRepo]); useEffect(() => { diff --git a/src/components/NetworkConfirmationModal/index.tsx b/src/components/NetworkConfirmationModal/index.tsx index 282e5e9e..d734cb8a 100644 --- a/src/components/NetworkConfirmationModal/index.tsx +++ b/src/components/NetworkConfirmationModal/index.tsx @@ -5,7 +5,7 @@ import { useEffect, useState } from "react"; import { getChain } from "@/config/chain"; import { ROUTES } from "@/config/routes"; import { usePolkadotContext } from "@/context/usePolkadotContext"; -import { useModalBehaviour } from "@/hooks/useModalBehaviour"; +import { useModalBehaviour } from "@/hooks/common/useModalBehaviour"; import { useGetXsignerSelected } from "@/hooks/xsignerSelected/useGetXsignerSelected"; import BaseConfirmationDialog from "../BaseConfirmationDialog"; diff --git a/src/components/Transaction/steps/Review.tsx b/src/components/Transaction/steps/Review.tsx index b7e65e94..34d38b67 100644 --- a/src/components/Transaction/steps/Review.tsx +++ b/src/components/Transaction/steps/Review.tsx @@ -3,6 +3,7 @@ import { ApiPromise } from "@polkadot/api"; import { AccountSigner } from "@/components/StepperSignersAccount/AccountSigner"; import { ChainExtended, getChain } from "@/config/chain"; +import { useNameAddressBookContext } from "@/context/NameInAddressBookContext"; import { useNetworkApi } from "@/hooks/useNetworkApi"; import { chainTokenSymbol } from "@/services/useink/substrate/tokenTypes"; @@ -22,6 +23,7 @@ export const ReviewTokens = (props: Props) => { const { apiPromise: api } = useNetworkApi(); const symbol = chainTokenSymbol(api as ApiPromise); const customToken = getChain(); + const { nameConnectedOrAddressBookOrSigners } = useNameAddressBookContext(); return ( @@ -35,7 +37,7 @@ export const ReviewTokens = (props: Props) => { diff --git a/src/components/TxBuilderStepper/ProposeTxStep/index.tsx b/src/components/TxBuilderStepper/ProposeTxStep/index.tsx index 8a166f80..d302f6db 100644 --- a/src/components/TxBuilderStepper/ProposeTxStep/index.tsx +++ b/src/components/TxBuilderStepper/ProposeTxStep/index.tsx @@ -7,10 +7,10 @@ import ErrorMessage from "@/components/common/ErrorMessage"; import { ExplorerLink } from "@/components/ExplorerLink"; import { TextFieldWithLoadingProps } from "@/components/TextFieldWithLoading/TextFieldWithLoading"; import { ROUTES } from "@/config/routes"; +import { useRecentlyClicked } from "@/hooks/common/useRecentlyClicked"; import { useMultisigContractPromise } from "@/hooks/contractPromise/useMultisigContractPromise"; import { sringArgsToContractParam } from "@/hooks/externalTxData/stringArgsToContractParam"; import { useCreateExternalTxData } from "@/hooks/externalTxData/useCreateExternalTxData"; -import { useRecentlyClicked } from "@/hooks/useRecentlyClicked"; import { useGetXsignerSelected } from "@/hooks/xsignerSelected/useGetXsignerSelected"; import { replacerArgs, diff --git a/src/components/TxTable/ConfirmationWidget.tsx b/src/components/TxTable/ConfirmationWidget.tsx index d13c5c82..6a8ad9a7 100644 --- a/src/components/TxTable/ConfirmationWidget.tsx +++ b/src/components/TxTable/ConfirmationWidget.tsx @@ -5,8 +5,11 @@ import { Dispatch, SetStateAction, useEffect, useMemo } from "react"; import { LoadingButton } from "@/components/common/LoadingButton"; import { usePolkadotContext } from "@/context/usePolkadotContext"; import { MultisigContractEvents } from "@/domain/events/MultisigContractEvents"; +import { + TWO_SECONDS, + useRecentlyClicked, +} from "@/hooks/common/useRecentlyClicked"; import { useDryRunExecution } from "@/hooks/useDryRunExecution"; -import { TWO_SECONDS, useRecentlyClicked } from "@/hooks/useRecentlyClicked"; import { ContractPromise } from "@/services/substrate/types"; import { shouldDisable } from "@/services/useink/utils"; diff --git a/src/components/TxTable/ModalTxExecution/index.tsx b/src/components/TxTable/ModalTxExecution/index.tsx new file mode 100644 index 00000000..826278ca --- /dev/null +++ b/src/components/TxTable/ModalTxExecution/index.tsx @@ -0,0 +1,87 @@ +import CloseIcon from "@mui/icons-material/Close"; +import { + Button, + DialogActions, + IconButton, + Modal, + Typography, +} from "@mui/material"; +import React from "react"; + +import { + ModalStyled, + ModalTypography, +} from "@/components/ModalAddressBook/styled"; +import { BlockchainIssuedEvent } from "@/domain/BlockchainIssuedEvent"; +import { MultisigContractEvents } from "@/domain/events/MultisigContractEvents"; +import { TransactionProposedItemUi } from "@/domain/TransactionProposedItemUi"; + +export type TransactionWithAction = TransactionProposedItemUi & { + actionName: BlockchainIssuedEvent["name"]; +}; + +interface Props { + open: boolean; + onClose: () => void; + onConfirm?: () => void; + onConfirmText?: string; + transactionToProcess: TransactionWithAction | undefined; +} + +export function ModalTxExecution({ + open, + onClose, + onConfirm, + onConfirmText = "Confirm", + transactionToProcess, +}: Props) { + if (!open || !transactionToProcess) return; + + const action = + transactionToProcess.actionName === + MultisigContractEvents.TransactionExecuted + ? "executed" + : "cancelled"; + + return ( + + + + {`Transaction #${transactionToProcess.txId} has been "${action}"!`} + + theme.palette.grey[500], + }} + > + + + + The transaction with identifier {transactionToProcess.txId} will be + out of the of the queue for reaching the required number of + signatures. + + + You can follow the transaction in the history tab. + + + + + + + + + ); +} diff --git a/src/components/TxTable/ModalTxExecution/useRemovedTxIds.tsx b/src/components/TxTable/ModalTxExecution/useRemovedTxIds.tsx new file mode 100644 index 00000000..849fd1b7 --- /dev/null +++ b/src/components/TxTable/ModalTxExecution/useRemovedTxIds.tsx @@ -0,0 +1,55 @@ +import { useEffect, useState } from "react"; + +import { useLocalDbContext } from "@/context/uselocalDbContext"; +import { BlockchainIssuedEvent } from "@/domain/BlockchainIssuedEvent"; +import { LocalMultisigEvents } from "@/domain/events/LocalMultisigEvents"; +import { MultisigContractEvents } from "@/domain/events/MultisigContractEvents"; +import { TransactionProposedItemUi } from "@/domain/TransactionProposedItemUi"; +import { useEventListenerCallback } from "@/hooks/useEventListenerCallback"; + +import { TransactionWithAction } from "."; + +interface Props { + data: TransactionProposedItemUi[] | undefined; + callback: () => void; +} + +interface UseRemovedTxIdsReturn { + transactionToProcess: TransactionWithAction | undefined; +} + +export function useRemovedTxIds({ + data, + callback, +}: Props): UseRemovedTxIdsReturn { + const [transactionToProcess, setTransactionWillBeExecuted] = + useState(); + const { localMultisigEventRepo } = useLocalDbContext(); + const [newEvent, setNewEvent] = useState(); + + useEventListenerCallback(LocalMultisigEvents.eventAdded, () => + setNewEvent( + localMultisigEventRepo + .getEvents() + .find( + (event) => + event.name === MultisigContractEvents.TransactionExecuted || + event.name === MultisigContractEvents.TransactionCancelled + ) + ) + ); + useEffect(() => { + if (!data || !newEvent) return; + + const willBeExecuted = data.find((tx) => tx.txId === newEvent.args[0]); + if (willBeExecuted) { + setTransactionWillBeExecuted({ + ...willBeExecuted, + actionName: newEvent.name, + }); + callback(); + } + }, [callback, data, localMultisigEventRepo, newEvent]); + + return { transactionToProcess }; +} diff --git a/src/components/TxTable/NameInAddressBook.tsx b/src/components/TxTable/NameInAddressBook.tsx index 4304e8f6..8f9b5951 100644 --- a/src/components/TxTable/NameInAddressBook.tsx +++ b/src/components/TxTable/NameInAddressBook.tsx @@ -1,6 +1,5 @@ import { useEffect, useState } from "react"; -import { LoadingSkeleton } from "@/components/common/LoadingSkeleton"; import { useNameAddressBookContext } from "@/context/NameInAddressBookContext"; import { truncateAddress } from "@/utils/formatString"; @@ -23,7 +22,7 @@ export function NameInAddressBook({ recipient }: Props) { }, [recipient, nameConnectedOrAddressBookOrSigners]); if (isLoading || nameInAddressBook === undefined) { - return ; + return "-"; } return nameInAddressBook diff --git a/src/components/TxTable/TransactionsQueueDetail.tsx b/src/components/TxTable/TransactionsQueueDetail.tsx index ad047a4c..3eb35ee4 100644 --- a/src/components/TxTable/TransactionsQueueDetail.tsx +++ b/src/components/TxTable/TransactionsQueueDetail.tsx @@ -1,12 +1,16 @@ import { Box } from "@mui/material"; +import router from "next/router"; import React from "react"; import { ChainId } from "useink/dist/chains"; import { LoadingSkeleton } from "@/components/common/LoadingSkeleton"; import { SignatoriesAccount } from "@/domain/SignatoriesAccount"; +import { useModalBehaviour } from "@/hooks/common/useModalBehaviour"; import { useMultisigContractPromise } from "@/hooks/contractPromise/useMultisigContractPromise"; import { useListTxQueue } from "@/hooks/transactions/useListTxQueue"; +import { ModalTxExecution } from "./ModalTxExecution"; +import { useRemovedTxIds } from "./ModalTxExecution/useRemovedTxIds"; import { TxDetailItem } from "./TxDetailItem"; interface Props { @@ -22,6 +26,11 @@ export const TransactionQueueDetail: React.FC = ({ const { multisigContractPromise } = useMultisigContractPromise( xsignerAccount.address ); + const { isOpen, closeModal, openModal } = useModalBehaviour(); + const { transactionToProcess } = useRemovedTxIds({ + data, + callback: () => openModal(), + }); if (data === undefined || multisigContractPromise?.contract === undefined) { return ( @@ -31,6 +40,21 @@ export const TransactionQueueDetail: React.FC = ({ ); } + const replaceURLParam = (paramValue: string) => { + const newQueryParams = { ...router.query }; + + newQueryParams["tab"] = paramValue; + + router.replace( + { + pathname: router.pathname, + query: newQueryParams, + }, + undefined, + { shallow: true } + ); + }; + return ( <> {data.map((txData) => { @@ -44,6 +68,13 @@ export const TransactionQueueDetail: React.FC = ({ /> ); })} + replaceURLParam("history")} + /> ); }; diff --git a/src/components/XsignerAccountInfoWidget/SelectXsignerItems.tsx b/src/components/XsignerAccountInfoWidget/SelectXsignerItems.tsx index 0d8ac5ac..1f48214c 100644 --- a/src/components/XsignerAccountInfoWidget/SelectXsignerItems.tsx +++ b/src/components/XsignerAccountInfoWidget/SelectXsignerItems.tsx @@ -12,7 +12,7 @@ import * as React from "react"; import { ROUTES } from "@/config/routes"; import { SignatoriesAccount } from "@/domain/SignatoriesAccount"; -import { UseModalBehaviour } from "@/hooks/useModalBehaviour"; +import { UseModalBehaviour } from "@/hooks/common/useModalBehaviour"; import { formatThreshold, truncateAddress } from "@/utils/formatString"; import CopyButton from "../common/CopyButton"; diff --git a/src/components/XsignerAccountInfoWidget/SwitchUserAccount.tsx b/src/components/XsignerAccountInfoWidget/SwitchUserAccount.tsx index eb615e8f..84472e20 100644 --- a/src/components/XsignerAccountInfoWidget/SwitchUserAccount.tsx +++ b/src/components/XsignerAccountInfoWidget/SwitchUserAccount.tsx @@ -1,7 +1,7 @@ import ChangeCircleRoundedIcon from "@mui/icons-material/ChangeCircleRounded"; import { IconButton } from "@mui/material"; -import { UseModalBehaviour } from "@/hooks/useModalBehaviour"; +import { UseModalBehaviour } from "@/hooks/common/useModalBehaviour"; type Props = UseModalBehaviour; diff --git a/src/components/XsignerAccountInfoWidget/XsignerAccountInfoUI.tsx b/src/components/XsignerAccountInfoWidget/XsignerAccountInfoUI.tsx index f2d2fe56..e9153810 100644 --- a/src/components/XsignerAccountInfoWidget/XsignerAccountInfoUI.tsx +++ b/src/components/XsignerAccountInfoWidget/XsignerAccountInfoUI.tsx @@ -4,7 +4,7 @@ import * as React from "react"; import { ChainColors, CHAINS_ALLOWED } from "@/config/chain"; import { SignatoriesAccount } from "@/domain/SignatoriesAccount"; -import { useModalBehaviour } from "@/hooks/useModalBehaviour"; +import { useModalBehaviour } from "@/hooks/common/useModalBehaviour"; import { useSetXsignerSelected } from "@/hooks/xsignerSelected/useSetXsignerSelected"; import { formatThreshold, truncateAddress } from "@/utils/formatString"; diff --git a/src/components/guards/ConnectedGuard.tsx b/src/components/guards/ConnectedGuard.tsx index 9fb3363e..663babd9 100644 --- a/src/components/guards/ConnectedGuard.tsx +++ b/src/components/guards/ConnectedGuard.tsx @@ -3,7 +3,7 @@ import { ReactElement, ReactNode, useEffect } from "react"; import { ROUTES, RouteValue, routeValues } from "@/config/routes"; import { usePolkadotContext } from "@/context/usePolkadotContext"; -import { useDelay } from "@/hooks/useDelay"; +import { useDelay } from "@/hooks/common/useDelay"; import { DELAY_UNTIL_READ_WALLETS } from "@/services/useink/constants"; interface ConnectionGuardProps { diff --git a/src/components/guards/WhenWalletIsConnectedGuard.tsx b/src/components/guards/WhenWalletIsConnectedGuard.tsx index ba7db58c..2d761f92 100644 --- a/src/components/guards/WhenWalletIsConnectedGuard.tsx +++ b/src/components/guards/WhenWalletIsConnectedGuard.tsx @@ -4,7 +4,7 @@ import { PropsWithChildren, useEffect } from "react"; import { FallbackSpinner } from "@/components/common/FallbackSpinner"; import { ROUTES } from "@/config/routes"; import { usePolkadotContext } from "@/context/usePolkadotContext"; -import { useDelay } from "@/hooks/useDelay"; +import { useDelay } from "@/hooks/common/useDelay"; import { useFindSignersAccount } from "@/hooks/xsignersAccount"; import { DELAY_UNTIL_READ_WALLETS } from "@/services/useink/constants"; diff --git a/src/context/NameInAddressBookContext.tsx b/src/context/NameInAddressBookContext.tsx index ce500559..c67cd355 100644 --- a/src/context/NameInAddressBookContext.tsx +++ b/src/context/NameInAddressBookContext.tsx @@ -88,7 +88,6 @@ export const NameInAddressBookProvider: React.FC = ({ const nameConnectedOrAddressBookOrSigners = useCallback( (address: string) => { - setIsLoading(true); let _name = null; const isSigner = xSignerSelected?.owners.find( (owner) => owner.address === address @@ -104,7 +103,6 @@ export const NameInAddressBookProvider: React.FC = ({ _name = xSignerSelected.name; } - setIsLoading(false); return _name; }, [ diff --git a/src/domain/events/LocalMultisigEvents.ts b/src/domain/events/LocalMultisigEvents.ts new file mode 100644 index 00000000..36ff069d --- /dev/null +++ b/src/domain/events/LocalMultisigEvents.ts @@ -0,0 +1,3 @@ +export const enum LocalMultisigEvents { + eventAdded = "eventAdded", +} diff --git a/src/domain/events/MultisigContractEvents.ts b/src/domain/events/MultisigContractEvents.ts index d282e7f6..0eab3395 100644 --- a/src/domain/events/MultisigContractEvents.ts +++ b/src/domain/events/MultisigContractEvents.ts @@ -1,6 +1,8 @@ export enum MultisigContractEvents { TransactionProposed = "TransactionProposed", TransactionRemoved = "TransactionRemoved", + TransactionExecuted = "TransactionExecuted", + TransactionCancelled = "TransactionCancelled", OwnerAdded = "OwnerAdded", ThresholdChanged = "ThresholdChanged", OwnerRemoved = "OwnerRemoved", diff --git a/src/hooks/common/useAutoClose.ts b/src/hooks/common/useAutoClose.ts new file mode 100644 index 00000000..b608b747 --- /dev/null +++ b/src/hooks/common/useAutoClose.ts @@ -0,0 +1,42 @@ +import { useEffect, useState } from "react"; + +interface Props { + initialTime?: number; + handleClose: () => void; + autoRun?: boolean; +} + +interface UseAutoCloseReturn { + countdown: number; + startAutoClose: () => void; +} + +export function useAutoClose({ + initialTime = 5, + handleClose, + autoRun = true, +}: Props): UseAutoCloseReturn { + const [countdown, setCountdown] = useState(initialTime); + + useEffect(() => { + let timer: NodeJS.Timeout; + + if (countdown > 0) { + timer = setTimeout(() => setCountdown(countdown - 1), 1000); + } else if (countdown === 0) { + handleClose(); + } + + return () => clearTimeout(timer); + }, [countdown, handleClose]); + + useEffect(() => { + if (autoRun) { + setCountdown(initialTime); + } + }, [autoRun, initialTime]); + + return { countdown, startAutoClose: () => setCountdown(initialTime) }; +} + +export default useAutoClose; diff --git a/src/hooks/useDelay.ts b/src/hooks/common/useDelay.ts similarity index 100% rename from src/hooks/useDelay.ts rename to src/hooks/common/useDelay.ts diff --git a/src/hooks/useModalBehaviour.ts b/src/hooks/common/useModalBehaviour.ts similarity index 100% rename from src/hooks/useModalBehaviour.ts rename to src/hooks/common/useModalBehaviour.ts diff --git a/src/hooks/useRecentlyClicked.ts b/src/hooks/common/useRecentlyClicked.ts similarity index 100% rename from src/hooks/useRecentlyClicked.ts rename to src/hooks/common/useRecentlyClicked.ts diff --git a/src/hooks/useRedirectComparison.ts b/src/hooks/common/useRedirectComparison.ts similarity index 100% rename from src/hooks/useRedirectComparison.ts rename to src/hooks/common/useRedirectComparison.ts diff --git a/src/hooks/useToggle.ts b/src/hooks/common/useToggle.ts similarity index 100% rename from src/hooks/useToggle.ts rename to src/hooks/common/useToggle.ts diff --git a/src/hooks/useEventListenerCallback.ts b/src/hooks/useEventListenerCallback.ts index e76d26c0..59df66b0 100644 --- a/src/hooks/useEventListenerCallback.ts +++ b/src/hooks/useEventListenerCallback.ts @@ -2,6 +2,7 @@ import { useEffect, useRef } from "react"; import { IS_DEVELOPMENT } from "@/config/app"; import { AddressBookEvents } from "@/domain/events/AddressBookEvents"; +import { LocalMultisigEvents } from "@/domain/events/LocalMultisigEvents"; import { MultisigContractEvents } from "@/domain/events/MultisigContractEvents"; import { WalletConnectionEvents } from "@/domain/events/WalletConnectionEvents"; import { XsignerAccountEvents } from "@/domain/events/XsignerAccountEvents"; @@ -11,7 +12,8 @@ type EventNames = | keyof typeof AddressBookEvents | keyof typeof WalletConnectionEvents | keyof typeof XsignerAccountEvents - | keyof typeof MultisigContractEvents; + | keyof typeof MultisigContractEvents + | keyof typeof LocalMultisigEvents; export function useEventListenerCallback( events: EventNames[] | EventNames, // accept any array of strings as event names diff --git a/src/pages/connect.tsx b/src/pages/connect.tsx index e0eeed6f..91d18e3e 100644 --- a/src/pages/connect.tsx +++ b/src/pages/connect.tsx @@ -7,7 +7,7 @@ import { BasicLayout } from "@/components/layout/BasicLayout"; import { MainContentCard } from "@/components/layout/shared/MainContentCard"; import { ROUTES } from "@/config/routes"; import { WalletConnectionEvents } from "@/domain/events/WalletConnectionEvents"; -import { useRedirectComparison } from "@/hooks/useRedirectComparison"; +import { useRedirectComparison } from "@/hooks/common/useRedirectComparison"; export function getTextInstructions(route: string) { if (route === ROUTES.New) {