@@ -6,8 +6,8 @@ import { ScopedLocalStorage } from ':core/storage/ScopedLocalStorage.js';
66import { Address } from ':core/type/index.js' ;
77import { bigIntStringFromBigInt , hexStringFromBuffer , randomBytesHex } from ':core/type/util.js' ;
88import {
9- WalletLinkConnection ,
10- WalletLinkConnectionUpdateListener ,
9+ WalletLinkConnection ,
10+ WalletLinkConnectionUpdateListener ,
1111} from './connection/WalletLinkConnection.js' ;
1212import { LOCAL_STORAGE_ADDRESSES_KEY } from './constants.js' ;
1313import { RelayEventManager } from './RelayEventManager.js' ;
@@ -260,6 +260,13 @@ export class WalletLinkRelay implements WalletLinkConnectionUpdateListener {
260260
261261 private publishWeb3RequestEvent ( id : string , request : Web3Request ) : void {
262262 const message : WalletLinkEventData = { type : 'WEB3_REQUEST' , id, request } ;
263+
264+ // Fire deeplink immediately for mobile web to avoid Safari popup blocking
265+ if ( this . isMobileWeb ) {
266+ this . openCoinbaseWalletDeeplink ( request . method ) ;
267+ }
268+
269+ // Then publish the event asynchronously
263270 this . publishEvent ( 'Web3Request' , message , true )
264271 . then ( ( _ ) => { } )
265272 . catch ( ( err ) => {
@@ -268,10 +275,6 @@ export class WalletLinkRelay implements WalletLinkConnectionUpdateListener {
268275 errorMessage : err . message ,
269276 } ) ;
270277 } ) ;
271-
272- if ( this . isMobileWeb ) {
273- this . openCoinbaseWalletDeeplink ( request . method ) ;
274- }
275278 }
276279
277280 // copied from MobileRelay
0 commit comments