diff --git a/.changeset/gold-parents-move.md b/.changeset/gold-parents-move.md new file mode 100644 index 00000000000..7da929b2275 --- /dev/null +++ b/.changeset/gold-parents-move.md @@ -0,0 +1,5 @@ +--- +"@thirdweb-dev/unity-js-bridge": patch +--- + +[Unity] Support Smart Wallet Account Override diff --git a/packages/unity-js-bridge/src/thirdweb-bridge.ts b/packages/unity-js-bridge/src/thirdweb-bridge.ts index b497d553a98..538d1df131e 100644 --- a/packages/unity-js-bridge/src/thirdweb-bridge.ts +++ b/packages/unity-js-bridge/src/thirdweb-bridge.ts @@ -75,6 +75,7 @@ interface TWBridge { email?: string, personalWallet?: PossibleWallet, authOptions?: string, + smartWalletAccountOverride?: string, ) => Promise; disconnect: () => Promise; switchNetwork: (chainId: string) => Promise; @@ -256,6 +257,7 @@ class ThirdwebBridge implements TWBridge { email?: string, personalWallet: PossibleWallet = "localWallet", authOptions?: string, + smartWalletAccountOverride?: string, ) { if (!this.activeSDK) { throw new Error("SDK not initialized"); @@ -346,7 +348,7 @@ class ThirdwebBridge implements TWBridge { ); if (this.activeWallet) { // Pass EOA and reconnect to initialize smart wallet - await this.initializeSmartWallet(smartWallet, this.activeWallet); + await this.initializeSmartWallet(smartWallet, this.activeWallet, smartWalletAccountOverride); } else { // If EOA wallet is not connected, throw error throw new Error( @@ -623,11 +625,16 @@ class ThirdwebBridge implements TWBridge { public async initializeSmartWallet( sw: SmartWallet, personalWallet: AbstractClientWallet, + accountAddress?: string, ) { + if(accountAddress) { + console.debug("Initializing smart wallet with account address override:", accountAddress); + } const personalWalletAddress = await personalWallet.getAddress(); console.debug("Personal wallet address:", personalWalletAddress); await sw.connect({ personalWallet, + accountAddress: accountAddress, }); if (sw.listenerCount("disconnect") === 1) { sw.on("disconnect", () => {