From f081c239307590e61f91e0538e1ecd99e83e2da6 Mon Sep 17 00:00:00 2001 From: secretshardul Date: Mon, 27 Mar 2023 13:24:47 +0530 Subject: [PATCH] fix: Phantom listener issue --- packages/use-solana/package.json | 4 ++-- .../use-solana/src/adapters/phantom/index.tsx | 16 ++++++---------- packages/use-solana/src/typings/window.d.ts | 1 + 3 files changed, 9 insertions(+), 12 deletions(-) diff --git a/packages/use-solana/package.json b/packages/use-solana/package.json index f4d6de91d..d5dec0c8d 100644 --- a/packages/use-solana/package.json +++ b/packages/use-solana/package.json @@ -18,8 +18,8 @@ "react": "^17.0.2" }, "dependencies": { - "@ledgerhq/hw-transport": "^6.11.2", - "@ledgerhq/hw-transport-webusb": "^6.11.2", + "@ledgerhq/hw-transport": "6.11.2", + "@ledgerhq/hw-transport-webusb": "6.11.2", "@project-serum/sol-wallet-adapter": "^0.2.6", "@saberhq/solana-contrib": "^1.7.4", "bs58": "^4.0.1", diff --git a/packages/use-solana/src/adapters/phantom/index.tsx b/packages/use-solana/src/adapters/phantom/index.tsx index eab9839d7..37615b83a 100644 --- a/packages/use-solana/src/adapters/phantom/index.tsx +++ b/packages/use-solana/src/adapters/phantom/index.tsx @@ -14,10 +14,7 @@ export class PhantomWalletAdapter } private get _provider(): PhantomProvider | undefined { - if (window?.solana?.isPhantom) { - return window.solana; - } - return undefined; + return window?.phantom?.solana } private _handleConnect = (...args: unknown[]) => { @@ -32,6 +29,7 @@ export class PhantomWalletAdapter return this._provider?.isConnected || false; } + // problem here? get autoApprove(): boolean { return this._provider?.autoApprove || false; } @@ -63,12 +61,10 @@ export class PhantomWalletAdapter window.open("https://phantom.app/", "_blank", "noopener noreferrer"); throw new Error("Phantom not installed"); } - if (!this._provider.listeners("connect").length) { - this._provider?.on("connect", this._handleConnect); - } - if (!this._provider.listeners("disconnect").length) { - this._provider?.on("disconnect", this._handleDisconnect); - } + // Fix- Listener length is not 0 now + this._provider?.on("connect", this._handleConnect); + this._provider?.on("disconnect", this._handleDisconnect); + await this._provider?.connect(); }; diff --git a/packages/use-solana/src/typings/window.d.ts b/packages/use-solana/src/typings/window.d.ts index 361120895..8b2b7f83f 100644 --- a/packages/use-solana/src/typings/window.d.ts +++ b/packages/use-solana/src/typings/window.d.ts @@ -33,6 +33,7 @@ export interface MathWalletProvider { } declare global { interface Window { + phantom?: { solana?: PhantomProvider } solana?: | MathWalletProvider | PhantomProvider