Skip to content

Commit e7be03e

Browse files
Merge pull request #77 from telosnetwork/feature/brave-wallet-support
Brave Wallet Support (mobile)
2 parents 868b6cf + 54ce809 commit e7be03e

File tree

2 files changed

+27
-8
lines changed

2 files changed

+27
-8
lines changed

src/features/bridge/ui/AccountModal.tsx

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import {groupBy} from 'lodash-es';
33
import {observer} from 'mobx-react';
44
import React, {useEffect, useRef, useState} from 'react';
55

6-
import { WalletType } from '@/core/config/createWallets';
6+
import { BraveWallet, WalletType } from '@/core/config/createWallets';
77
import {transactionStore} from '@/core/stores/transactionStore';
88
import {uiStore, WalletTab} from '@/core/stores/uiStore';
99
import {walletStore} from '@/core/stores/walletStore';
@@ -154,23 +154,26 @@ const WalletItem: React.FC<{
154154
}> = observer(({wallet}) => {
155155
const mobile = isMobile();
156156

157-
if (wallet.type === 'Brave' || (wallet.type === 'Core' && mobile)) {
157+
if (wallet.type === 'Core' && mobile) {
158158
// https://github.com/telosnetwork/telos-bridge/issues/20
159159
return null;
160160
}
161161

162162
let buttonText;
163+
const win = window as any;
163164

164-
const isSafePal = (window as any).ethereum.isSafePal;
165+
const isSafePal = win.ethereum?.isSafePal;
166+
const isBraveBrowser = win.navigator.brave;
167+
const isBraveWallet = win.ethereum?.isBraveWallet;
165168

166169
if (wallet.isConnecting) {
167170
buttonText = 'Connecting...';
168171
} else if (wallet.isConnected && wallet.address) {
169172
buttonText = `${formatAddress(wallet.address, 16)}`;
170173
// handle safepal extension conflict
171-
}else if (wallet.type === WalletType.METAMASK && isSafePal){
174+
} else if (wallet.type === WalletType.METAMASK && isSafePal){
172175
buttonText = `Get MetaMask Wallet`;
173-
} else if (wallet.isAvailable) {
176+
} else if (wallet.isAvailable || (wallet.type === WalletType.BRAVE && isBraveWallet)) {
174177
buttonText = `Connect ${wallet.type}`;
175178
} else if (!mobile) {
176179
buttonText = `Get ${wallet.type} Wallet`;
@@ -188,7 +191,10 @@ const WalletItem: React.FC<{
188191
window.open('https://metamask.app.link/dapp/bridge.telos.net');
189192
return;
190193
}
191-
if (wallet.isAvailable) {
194+
if (isBraveBrowser && isBraveWallet){
195+
(wallet as BraveWallet).setProvider(WalletType.BRAVE, win.ethereum);
196+
}
197+
if (wallet.isAvailable || isBraveWallet) {
192198
wallet.connect();
193199
return;
194200
}
@@ -201,6 +207,8 @@ const WalletItem: React.FC<{
201207
window.open('https://phantom.app/ul/');
202208
}else if (wallet.type === WalletType.SAFEPAL){
203209
window.open('https://www.safepal.com/en/download');
210+
}else if (wallet.type === WalletType.BRAVE){
211+
window.open((wallet as any).url);
204212
}
205213
}
206214

src/features/core/config/createWallets.ts

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,16 @@ import {ChainId} from '@layerzerolabs/lz-sdk';
22
import { toEvmChainId } from '@layerzerolabs/ui-core';
33
import {Wallet} from '@layerzerolabs/ui-wallet';
44
import {
5-
BraveWallet,
65
CoinbaseWallet,
76
CoreWallet,
7+
ExternalWallet,
88
InjectedWallet,
99
MetaMaskWallet,
1010
PhantomWallet as PhantomWalletEvm,
1111
ProviderIdentityFlag,
1212
WalletConnect,
1313
} from '@layerzerolabs/ui-wallet-evm';
14+
import { isMobile } from '../utils/platform';
1415

1516
type ArrayOneOrMore<T> = {
1617
0: T;
@@ -36,6 +37,13 @@ class SafePal extends InjectedWallet {
3637
readonly icon = "https://pbs.twimg.com/profile_images/1676254262505123840/NhRRmBnl_400x400.png";
3738
}
3839

40+
export class BraveWallet extends ExternalWallet {
41+
type = WalletType.BRAVE;
42+
identityFlag = ProviderIdentityFlag.BraveWallet;
43+
readonly url = "https://brave.com/wallet/";
44+
readonly icon = "https://icons-ckg.pages.dev/lz-light/wallets/brave.svg";
45+
}
46+
3947
enum ChainListId {
4048
TELOS = 40,
4149
POLYGON = 137,
@@ -51,7 +59,10 @@ export function createWallets(chains: ChainId[]): Record<string, Wallet<unknown>
5159
wallets.metamaskWallet = new MetaMaskWallet();
5260
wallets.coinbaseWallet = new CoinbaseWallet();
5361
wallets.coreWallet = new CoreWallet();
54-
wallets.braveWallet = new BraveWallet();
62+
// Brave wallet only supported on mobile at the moment, see https://github.com/telosnetwork/teloscan/issues/544
63+
if (isMobile()){
64+
wallets.braveWallet = new BraveWallet();
65+
}
5566
wallets.phantomEvm = new PhantomWalletEvm();
5667
wallets.safePal = new SafePal();
5768

0 commit comments

Comments
 (0)