diff --git a/src/components/walletconnect/HeaderWidget/index.tsx b/src/components/walletconnect/HeaderWidget/index.tsx index 7000e1cd0b..8696f68b65 100644 --- a/src/components/walletconnect/HeaderWidget/index.tsx +++ b/src/components/walletconnect/HeaderWidget/index.tsx @@ -19,6 +19,7 @@ const usePrepopulatedUri = (): [string, () => void] => { const clearUri = useCallback(() => { setSearchParamWcUri(null) + // This does not clear the system clipboard, just state setClipboardWcUri('') }, [setClipboardWcUri, setSearchParamWcUri]) diff --git a/src/components/walletconnect/WcInput/index.tsx b/src/components/walletconnect/WcInput/index.tsx index e7fa85c105..0c75abe0e5 100644 --- a/src/components/walletconnect/WcInput/index.tsx +++ b/src/components/walletconnect/WcInput/index.tsx @@ -43,9 +43,7 @@ const WcInput = ({ uri }: { uri: string }): ReactElement => { ) useEffect(() => { - if (uri.startsWith('wc:')) { - onInput(uri) - } + onInput(uri) }, [onInput, uri]) const onPaste = useCallback(async () => { diff --git a/src/services/exceptions/ErrorCodes.ts b/src/services/exceptions/ErrorCodes.ts index d44635e219..e05a741fa4 100644 --- a/src/services/exceptions/ErrorCodes.ts +++ b/src/services/exceptions/ErrorCodes.ts @@ -49,7 +49,6 @@ enum ErrorCodes { _706 = '706: Failed to write to IndexedDB', _707 = '707: Error requesting clipboard permissions', _708 = '708: Failed to read clipboard', - _709 = '709: Failed to write to clipboard', _800 = '800: Safe creation tx failed', _801 = '801: Failed to send a tx with a spending limit', diff --git a/src/services/walletconnect/useWalletConnectClipboardUri.ts b/src/services/walletconnect/useWalletConnectClipboardUri.ts index 1d7ad5b57f..5681529290 100644 --- a/src/services/walletconnect/useWalletConnectClipboardUri.ts +++ b/src/services/walletconnect/useWalletConnectClipboardUri.ts @@ -1,9 +1,10 @@ import { useState, useEffect } from 'react' +import type { Dispatch, SetStateAction } from 'react' import { getClipboard, isClipboardGranted } from '@/utils/clipboard' -import { Errors, logError } from '../exceptions' +import { isPairingUri } from './utils' -export const useWalletConnectClipboardUri = (): [string, (data: string) => Promise] => { +export const useWalletConnectClipboardUri = (): [string, Dispatch>] => { const [state, setState] = useState('') useEffect(() => { @@ -20,7 +21,7 @@ export const useWalletConnectClipboardUri = (): [string, (data: string) => Promi const clipboard = await getClipboard() - if (clipboard.startsWith('wc:')) { + if (isPairingUri(clipboard)) { setState(clipboard) } } @@ -34,16 +35,5 @@ export const useWalletConnectClipboardUri = (): [string, (data: string) => Promi } }, []) - const setClipboard = async (data: string) => { - await navigator.clipboard - .writeText(data) - .then(() => { - setState(data) - }) - .catch((e) => { - logError(Errors._709, e) - }) - } - - return [state, setClipboard] + return [state, setState] } diff --git a/src/services/walletconnect/useWalletConnectSearchParamUri.ts b/src/services/walletconnect/useWalletConnectSearchParamUri.ts index 6f4c274c19..d21a1bc14a 100644 --- a/src/services/walletconnect/useWalletConnectSearchParamUri.ts +++ b/src/services/walletconnect/useWalletConnectSearchParamUri.ts @@ -1,13 +1,16 @@ import { useRouter } from 'next/router' import { useCallback } from 'react' +import { isPairingUri } from './utils' + const WC_URI_SEARCH_PARAM = 'wc' export function useWalletConnectSearchParamUri(): [string | null, (wcUri: string | null) => void] { const router = useRouter() const wcUriQuery = router.query[WC_URI_SEARCH_PARAM] - const wcUri = wcUriQuery ? (Array.isArray(wcUriQuery) ? wcUriQuery[0] : wcUriQuery) : null + const value = wcUriQuery ? (Array.isArray(wcUriQuery) ? wcUriQuery[0] : wcUriQuery) : null + const wcUri = value && isPairingUri(value) ? value : null const setWcUri = useCallback( (wcUri: string | null) => { diff --git a/src/services/walletconnect/utils.ts b/src/services/walletconnect/utils.ts index 225cdc0316..3c90647edb 100644 --- a/src/services/walletconnect/utils.ts +++ b/src/services/walletconnect/utils.ts @@ -1,5 +1,9 @@ import { EIP155 } from './constants' +export const isPairingUri = (uri: string): boolean => { + return uri.startsWith('wc:') +} + export const getEip155ChainId = (chainId: string): string => { return `${EIP155}:${chainId}` } diff --git a/src/utils/clipboard.ts b/src/utils/clipboard.ts index eee6d86fca..1c063750df 100644 --- a/src/utils/clipboard.ts +++ b/src/utils/clipboard.ts @@ -32,11 +32,3 @@ export const getClipboard = async (): Promise => { return clipboard } - -export const setClipboard = async (data: string): Promise => { - try { - await navigator.clipboard.writeText(data) - } catch (e) { - logError(Errors._709, e) - } -}