From 0739a2afb3c3ac1f2e380137ccfa051c4b303cbd Mon Sep 17 00:00:00 2001 From: Alexander Fung Date: Mon, 29 Apr 2024 21:03:01 -0400 Subject: [PATCH 1/2] Include `signInFeature` in the features for `SolanaWalletAdapterWallet` `SolanaWalletAdapterWallet` was missing `signInFeature`, so anything wrapped it in would be missing the `signIn` method --- packages/wallet-adapter/base/src/wallet.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/wallet-adapter/base/src/wallet.ts b/packages/wallet-adapter/base/src/wallet.ts index 5875a492..35c599c0 100644 --- a/packages/wallet-adapter/base/src/wallet.ts +++ b/packages/wallet-adapter/base/src/wallet.ts @@ -162,7 +162,12 @@ export class SolanaWalletAdapterWallet implements Wallet { }; } - return { ...features, ...signTransactionFeature, ...signMessageFeature }; + return { + ...features, + ...signTransactionFeature, + ...signMessageFeature, + ...signInFeature, + }; } get accounts() { From a0e6169b6af1991558053845575a87576f93305e Mon Sep 17 00:00:00 2001 From: Alex Fung Date: Tue, 30 Apr 2024 17:26:50 -0400 Subject: [PATCH 2/2] use util function to compare account equality --- packages/wallet-adapter/base/src/wallet.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/wallet-adapter/base/src/wallet.ts b/packages/wallet-adapter/base/src/wallet.ts index 35c599c0..2d89370c 100644 --- a/packages/wallet-adapter/base/src/wallet.ts +++ b/packages/wallet-adapter/base/src/wallet.ts @@ -36,7 +36,7 @@ import { type StandardEventsNames, type StandardEventsOnMethod, } from '@wallet-standard/features'; -import { arraysEqual, bytesEqual, ReadonlyWalletAccount } from '@wallet-standard/wallet'; +import { arraysEqual, bytesEqual, ReadonlyWalletAccount, walletAccountsEqual } from '@wallet-standard/wallet'; import bs58 from 'bs58'; /** TODO: docs */ @@ -277,7 +277,7 @@ export class SolanaWalletAdapterWallet implements Wallet { if (inputs.length === 1) { // eslint-disable-next-line @typescript-eslint/no-non-null-assertion const input = inputs[0]!; - if (input.account !== this.#account) throw new Error('invalid account'); + if (!walletAccountsEqual(input.account, this.#account)) throw new Error('invalid account'); if (!isSolanaChain(input.chain)) throw new Error('invalid chain'); const transaction = this.#deserializeTransaction(input.transaction); const { commitment, preflightCommitment, skipPreflight, maxRetries, minContextSlot } = input.options || {}; @@ -326,7 +326,7 @@ export class SolanaWalletAdapterWallet implements Wallet { if (inputs.length === 1) { // eslint-disable-next-line @typescript-eslint/no-non-null-assertion const input = inputs[0]!; - if (input.account !== this.#account) throw new Error('invalid account'); + if (!walletAccountsEqual(input.account, this.#account)) throw new Error('invalid account'); if (input.chain && !isSolanaChain(input.chain)) throw new Error('invalid chain'); const transaction = this.#deserializeTransaction(input.transaction); @@ -344,7 +344,7 @@ export class SolanaWalletAdapterWallet implements Wallet { outputs.push({ signedTransaction: serializedTransaction }); } else if (inputs.length > 1) { for (const input of inputs) { - if (input.account !== this.#account) throw new Error('invalid account'); + if (!walletAccountsEqual(input.account, this.#account)) throw new Error('invalid account'); if (input.chain && !isSolanaChain(input.chain)) throw new Error('invalid chain'); } const transactions = inputs.map(({ transaction }) => this.#deserializeTransaction(transaction)); @@ -377,7 +377,7 @@ export class SolanaWalletAdapterWallet implements Wallet { if (inputs.length === 1) { // eslint-disable-next-line @typescript-eslint/no-non-null-assertion const input = inputs[0]!; - if (input.account !== this.#account) throw new Error('invalid account'); + if (!walletAccountsEqual(input.account, this.#account)) throw new Error('invalid account'); const signature = await this.#adapter.signMessage(input.message);