diff --git a/src/contexts/RainbowProvider/configs.tsx b/src/contexts/RainbowProvider/configs.tsx index 1e27a74d6..d5c39cf0e 100644 --- a/src/contexts/RainbowProvider/configs.tsx +++ b/src/contexts/RainbowProvider/configs.tsx @@ -19,12 +19,14 @@ import produce from "immer" import { RPC_URL } from "@/constants" import { requireEnv } from "@/utils" +import { BinanceWallet } from "./walletConnectors/binanceWallet/binanceWallet" + const projectId = requireEnv("REACT_APP_CONNECT_WALLET_PROJECT_ID") const wallets = [ { groupName: "Popular", - wallets: [metaMaskWallet, coinbaseWallet, rabbyWallet, okxWallet, zerionWallet, trustWallet], + wallets: [metaMaskWallet, coinbaseWallet, rabbyWallet, okxWallet, zerionWallet, trustWallet, BinanceWallet], }, { groupName: "More", diff --git a/src/contexts/RainbowProvider/walletConnectors/binanceWallet/binanceWallet.svg b/src/contexts/RainbowProvider/walletConnectors/binanceWallet/binanceWallet.svg new file mode 100644 index 000000000..3c67f678d --- /dev/null +++ b/src/contexts/RainbowProvider/walletConnectors/binanceWallet/binanceWallet.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/contexts/RainbowProvider/walletConnectors/binanceWallet/binanceWallet.ts b/src/contexts/RainbowProvider/walletConnectors/binanceWallet/binanceWallet.ts new file mode 100644 index 000000000..5aea0f651 --- /dev/null +++ b/src/contexts/RainbowProvider/walletConnectors/binanceWallet/binanceWallet.ts @@ -0,0 +1,55 @@ +import { RainbowKitWalletConnectParameters, Wallet, getWalletConnectConnector } from "@rainbow-me/rainbowkit" + +import { isAndroid } from "@/utils" + +export interface DefaultWalletOptions { + projectId: string + walletConnectParameters?: RainbowKitWalletConnectParameters +} + +export type BinanceWalletOptions = DefaultWalletOptions + +export const BinanceWallet = ({ projectId, walletConnectParameters }: BinanceWalletOptions): Wallet => ({ + id: "binance", + name: "Binance Wallet", + iconUrl: async () => (await import("./binanceWallet.svg")).default, + iconBackground: "#000000", + downloadUrls: { + android: "https://play.google.com/store/apps/details?id=com.binance.dev", + ios: "https://apps.apple.com/us/app/id1436799971", + mobile: "https://www.binance.com/en/download", + qrCode: "https://www.binance.com/en/web3wallet", + }, + mobile: { + getUri: (uri: string) => { + return isAndroid() ? uri : `bnc://app.binance.com/cedefi/wc?uri=${encodeURIComponent(uri)}` + }, + }, + qrCode: { + getUri: (uri: string) => uri, + instructions: { + learnMoreUrl: "https://www.binance.com/en/web3wallet", + steps: [ + { + description: "wallet_connectors.binance.qr_code.step1.description", + step: "install", + title: "wallet_connectors.binance.qr_code.step1.title", + }, + { + description: "wallet_connectors.binance.qr_code.step2.description", + step: "create", + title: "wallet_connectors.binance.qr_code.step2.title", + }, + { + description: "wallet_connectors.binance.qr_code.step3.description", + step: "scan", + title: "wallet_connectors.binance.qr_code.step3.title", + }, + ], + }, + }, + createConnector: getWalletConnectConnector({ + projectId, + walletConnectParameters, + }), +}) diff --git a/src/utils/common.ts b/src/utils/common.ts index 30c3dc49b..023b54b02 100644 --- a/src/utils/common.ts +++ b/src/utils/common.ts @@ -112,3 +112,7 @@ export function generateShareTwitterURL(url, text, via = "Scroll_ZKP") { url, )}&text=${encodeURIComponent(text)}&via=${via}` } + +export function isAndroid(): boolean { + return typeof navigator !== "undefined" && /android/i.test(navigator.userAgent) +}