Skip to content

Commit

Permalink
Merge pull request #1258 from layerswap/dev
Browse files Browse the repository at this point in the history
Enforces chain in transaction on mobile
  • Loading branch information
babkenmes authored Feb 21, 2025
2 parents d5354d5 + 38cb615 commit ccecc56
Show file tree
Hide file tree
Showing 11 changed files with 554 additions and 54 deletions.
1 change: 1 addition & 0 deletions Models/WalletProvider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ export type Wallet = {
starknetAccount?: AccountInterface,
wallet?: StarknetWindowObject,
l1Address?: string,
deepLink?: string
}
chainId?: string | number,
isLoading?: boolean,
Expand Down
18 changes: 12 additions & 6 deletions components/Swap/Withdraw/Wallet/WalletTransfer/TransferToken.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { FC, useCallback, useEffect, useState } from "react";
import {
useAccount,
useConfig,
useSendTransaction
} from "wagmi";
import { parseEther } from 'viem'
Expand All @@ -15,6 +16,7 @@ import { ButtonWrapper } from "./buttons";
import { useSwapTransactionStore } from "../../../../../stores/swapTransactionStore";
import { useSwapDataState } from "../../../../../context/swap";
import { datadogRum } from "@datadog/browser-rum";
import { isMobile } from "../../../../../lib/openLink";

const TransferTokenButton: FC<BaseTransferButtonProps> = ({
depositAddress,
Expand All @@ -35,7 +37,6 @@ const TransferTokenButton: FC<BaseTransferButtonProps> = ({
const { depositActionsResponse } = useSwapDataState()

const callData = depositActionsResponse?.find(da => true)?.call_data as `0x${string}` | undefined

const transaction = useSendTransaction()

useEffect(() => {
Expand Down Expand Up @@ -72,7 +73,8 @@ const TransferTokenButton: FC<BaseTransferButtonProps> = ({
console.error(e.message)
}
}, [transaction?.data, swapId])

const [clientChain, setClientChain] = useState<number | undefined>()
const [connection, setConnection] = useState<any>()
const clickHandler = useCallback(async () => {
setButtonClicked(true)
try {
Expand All @@ -90,16 +92,20 @@ const TransferTokenButton: FC<BaseTransferButtonProps> = ({
value: parseEther(amount?.toString()),
gas: estimatedGas,
data: callData,
account: selectedSourceAccount.address
account: selectedSourceAccount.address as `0x${string}`
}
if (isMobile() && selectedSourceAccount.wallet.metadata?.deepLink) {
window.location.href = selectedSourceAccount.wallet.metadata?.deepLink
await new Promise(resolve => setTimeout(resolve, 100))
}
transaction?.sendTransaction(tx as any)
transaction?.sendTransaction(tx)
} catch (e) {
const error = new Error(e)
error.name = "TransferTokenError"
error.cause = e
datadogRum.addError(error);
}
}, [transaction, estimatedGas, depositAddress, amount, callData])
}, [transaction, estimatedGas, depositAddress, amount, callData, chainId])

const isError = transaction.isError
return <div className="w-full space-y-3 flex flex-col justify-between h-full text-primary-text">
Expand Down Expand Up @@ -162,4 +168,4 @@ const TransferTokenButton: FC<BaseTransferButtonProps> = ({
</div>
}

export default TransferTokenButton
export default TransferTokenButton
5 changes: 3 additions & 2 deletions components/WalletProviders/Wagmi.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@ import { Chain, http } from 'viem';
import { WalletModalProvider } from '../WalletModal';
import { argent } from '../../lib/wallets/connectors/argent';
import { rainbow } from '../../lib/wallets/connectors/rainbow';
import { coinbaseWallet, metaMask, walletConnect } from '@wagmi/connectors'
import { metaMask } from '../../lib/wallets/connectors/metamask';
import { coinbaseWallet, walletConnect } from '@wagmi/connectors'
import { hasInjectedProvider } from '../../lib/wallets/connectors/getInjectedConnector';
import { bitget } from '../../lib/wallets/connectors/bitget';
import { isMobile } from '../../lib/isMobile';
Expand Down Expand Up @@ -56,7 +57,7 @@ function WagmiComponent({ children }: Props) {
}),
walletConnect({ projectId: WALLETCONNECT_PROJECT_ID, showQrModal: isMobile(), customStoragePrefix: 'walletConnect' }),
argent({ projectId: WALLETCONNECT_PROJECT_ID, showQrModal: false, customStoragePrefix: 'argent' }),
...(!isMetaMaskInjected ? [metaMask()] : []),
...(!isMetaMaskInjected ? [metaMask({ projectId: WALLETCONNECT_PROJECT_ID, showQrModal: false, customStoragePrefix: 'metamask' })] : []),
...(!isRainbowInjected ? [rainbow({ projectId: WALLETCONNECT_PROJECT_ID, showQrModal: false, customStoragePrefix: 'rainbow' })] : []),
...(!isBitKeepInjected ? [bitget({ projectId: WALLETCONNECT_PROJECT_ID, showQrModal: false, customStoragePrefix: 'bitget' })] : []),
browserInjected()
Expand Down
1 change: 1 addition & 0 deletions lib/wallets/connectors/EthereumProvider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -672,6 +672,7 @@ export type LSConnector = Connector & {
resolveURI?: (uri: string) => string
order?: number,
isAvailable?: boolean,
deepLink?: string,
}

export interface ProviderRpcError extends Error {
Expand Down
1 change: 1 addition & 0 deletions lib/wallets/connectors/argent/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,7 @@ export function argent(parameters: WalletConnectParameters) {
return ({
id: 'argent',
name: 'Argent',
deepLink: 'argent://wc',
resolveURI: (uri: string) => {
return (isAndroid() || !isMobile())
? uri
Expand Down
3 changes: 2 additions & 1 deletion lib/wallets/connectors/bitget/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,8 @@ export function bitget(parameters: WalletConnectParameters) {
id: 'bitget',
name: 'BitGet',
rdns: 'com.bitget.web3',
getUri: (uri: string) => {
deepLink: 'bitkeep://wc',
resolveURI: (uri: string) => {
return isAndroid()
? uri
: `bitkeep://wc?uri=${encodeURIComponent(uri)}`;
Expand Down
Loading

0 comments on commit ccecc56

Please sign in to comment.