From a1e34e75758e80293c84475afe2ce7bbded20d3b Mon Sep 17 00:00:00 2001
From: joepegler <joepegler123@gmail.com>
Date: Tue, 10 Dec 2024 15:55:01 +0000
Subject: [PATCH] chore: fix window.ethereum (#150)

---
 CHANGELOG.md                      |  6 ++++++
 package.json                      |  2 +-
 src/sdk/account/utils/toSigner.ts | 11 +++++++++--
 3 files changed, 16 insertions(+), 3 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index b015364b2..200eec3de 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,11 @@
 # @biconomy/sdk
 
+## 0.0.18
+
+### Patch Changes
+
+- fix window.ethereum
+
 ## 0.0.17
 
 ### Patch Changes
diff --git a/package.json b/package.json
index ca571c409..dcb1bd7d6 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@biconomy/sdk",
-  "version": "0.0.17",
+  "version": "0.0.18",
   "author": "Biconomy",
   "repository": "github:bcnmy/sdk",
   "main": "./dist/_cjs/index.js",
diff --git a/src/sdk/account/utils/toSigner.ts b/src/sdk/account/utils/toSigner.ts
index 746be9a60..289e6b398 100644
--- a/src/sdk/account/utils/toSigner.ts
+++ b/src/sdk/account/utils/toSigner.ts
@@ -86,7 +86,7 @@ export async function toSigner<
     | WalletClient<Transport, Chain | undefined, Account>
     | undefined = undefined
 
-  if ("request" in signer && signer?.type !== "walletClient") {
+  if ("request" in signer) {
     if (!address) {
       try {
         ;[address] = await (signer as EthereumProvider).request({
@@ -112,8 +112,15 @@ export async function toSigner<
     walletClient = signer as WalletClient<Transport, Chain | undefined, Account>
   }
 
+  const addressFromWalletClient =
+    walletClient?.account?.address ?? (await walletClient?.getAddresses())?.[0]
+
+  if (!addressFromWalletClient) {
+    throw new Error("address not found in wallet client")
+  }
+
   return toAccount({
-    address: walletClient.account.address,
+    address: addressFromWalletClient,
     async signMessage({ message }) {
       return walletClient.signMessage({ message })
     },