From e57a63d531d4de46528c795f395a09e7674c3ca7 Mon Sep 17 00:00:00 2001 From: Vlad Drinceanu Date: Mon, 24 Jul 2023 12:13:44 +0300 Subject: [PATCH] add signTransactions method --- src/AuthProviders/ExtensionProvider.ts | 6 +++++- src/AuthProviders/LedgerProvider.ts | 4 ++++ src/AuthProviders/PemProvider.ts | 11 +++++++++++ src/AuthProviders/WalletConnectProvider.ts | 4 ++++ src/AuthProviders/WebProvider.ts | 8 ++++++++ src/AuthProviders/WebviewProvider.ts | 2 +- src/types/index.ts | 3 +++ 7 files changed, 36 insertions(+), 2 deletions(-) diff --git a/src/AuthProviders/ExtensionProvider.ts b/src/AuthProviders/ExtensionProvider.ts index bc7c7fa..1a49b9f 100644 --- a/src/AuthProviders/ExtensionProvider.ts +++ b/src/AuthProviders/ExtensionProvider.ts @@ -61,10 +61,14 @@ export class ExtensionProvider implements IAuthProvider { return result; } - signTransaction(tx: Transaction): Promise { + signTransaction(tx: Transaction): Promise { return this.provider.signTransaction(tx as CoreTransaction); } + signTransactions(transactions: Transaction[]): Promise { + return this.provider.signTransactions(transactions); + } + getSignature() { if (this.provider.account.signature !== undefined) { return this.provider.account.signature; diff --git a/src/AuthProviders/LedgerProvider.ts b/src/AuthProviders/LedgerProvider.ts index 9f2b814..bbca92c 100644 --- a/src/AuthProviders/LedgerProvider.ts +++ b/src/AuthProviders/LedgerProvider.ts @@ -95,6 +95,10 @@ export class LedgerProvider implements IAuthProvider { return this.provider.signTransaction(tx); } + signTransactions(transactions: Transaction[]): Promise { + return this.provider.signTransactions(transactions); + } + getSignature() { return this.signature; } diff --git a/src/AuthProviders/PemProvider.ts b/src/AuthProviders/PemProvider.ts index b1fe122..1294a4b 100644 --- a/src/AuthProviders/PemProvider.ts +++ b/src/AuthProviders/PemProvider.ts @@ -56,6 +56,17 @@ export class PemProvider implements IAuthProvider { return tx; } + async signTransactions(transactions: Transaction[]): Promise { + const signedTransactions: Transaction[] = []; + for (const tx of transactions) { + const signedTx = await this.signTransaction(tx); + if (!signedTx) {throw new Error("Failed to sign transaction");} + signedTransactions.push(signedTx); + } + + return signedTransactions; + } + getSignature() { return null; } diff --git a/src/AuthProviders/WalletConnectProvider.ts b/src/AuthProviders/WalletConnectProvider.ts index 23ce79d..512b5b2 100644 --- a/src/AuthProviders/WalletConnectProvider.ts +++ b/src/AuthProviders/WalletConnectProvider.ts @@ -53,6 +53,10 @@ export class WalletConnectProvider implements IAuthProvider { return this.provider.signTransaction(tx as Transaction); } + signTransactions(transactions: Transaction[]): Promise { + return this.provider.signTransactions(transactions); + } + getType(): AuthProviderType { return AuthProviderType.WALLET_CONNECT; } diff --git a/src/AuthProviders/WebProvider.ts b/src/AuthProviders/WebProvider.ts index 97d7d27..908bf7e 100644 --- a/src/AuthProviders/WebProvider.ts +++ b/src/AuthProviders/WebProvider.ts @@ -77,6 +77,14 @@ export class WebProvider implements IAuthProvider { return null; } + async signTransactions(transactions: Transaction[]): Promise { + await this.provider.signTransactions(transactions as CoreTransaction[], { + callbackUrl: this.connectionOptions.transactionRedirectUrl, + }); + + return []; + } + getAddress(): string | null { return this.address; } diff --git a/src/AuthProviders/WebviewProvider.ts b/src/AuthProviders/WebviewProvider.ts index a259678..cd49256 100644 --- a/src/AuthProviders/WebviewProvider.ts +++ b/src/AuthProviders/WebviewProvider.ts @@ -164,4 +164,4 @@ export class WebviewProvider implements IAuthProvider { }; } -}; +} diff --git a/src/types/index.ts b/src/types/index.ts index 8c697e3..9896775 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -42,6 +42,9 @@ export interface IAuthProvider { signTransaction(tx: Transaction): Promise; + signTransactions(transactions: Transaction[]): Promise; + + getType(): AuthProviderType; toJson(): IAuthState;