diff --git a/packages/walletkit-android-bridge/src/api/eventListeners.ts b/packages/walletkit-android-bridge/src/api/eventListeners.ts index 08414c752..7bb5fe997 100644 --- a/packages/walletkit-android-bridge/src/api/eventListeners.ts +++ b/packages/walletkit-android-bridge/src/api/eventListeners.ts @@ -12,11 +12,13 @@ import type { RequestErrorEvent, SendTransactionRequestEvent, SignDataRequestEvent, + SignMessageRequestEvent, } from '@ton/walletkit'; type ConnectEventListener = ((event: ConnectionRequestEvent) => void) | null; type TransactionEventListener = ((event: SendTransactionRequestEvent) => void) | null; type SignDataEventListener = ((event: SignDataRequestEvent) => void) | null; +type SignMessageEventListener = ((event: SignMessageRequestEvent) => void) | null; type DisconnectEventListener = ((event: DisconnectionEvent) => void) | null; type ErrorEventListener = ((event: RequestErrorEvent) => void) | null; @@ -24,6 +26,7 @@ export const eventListeners = { onConnectListener: null as ConnectEventListener, onTransactionListener: null as TransactionEventListener, onSignDataListener: null as SignDataEventListener, + onSignMessageListener: null as SignMessageEventListener, onDisconnectListener: null as DisconnectEventListener, onErrorListener: null as ErrorEventListener, }; diff --git a/packages/walletkit-android-bridge/src/api/index.ts b/packages/walletkit-android-bridge/src/api/index.ts index f19f88abc..e58c15f1d 100644 --- a/packages/walletkit-android-bridge/src/api/index.ts +++ b/packages/walletkit-android-bridge/src/api/index.ts @@ -59,6 +59,8 @@ export const api = { rejectTransactionRequest: requests.rejectTransactionRequest, approveSignDataRequest: requests.approveSignDataRequest, rejectSignDataRequest: requests.rejectSignDataRequest, + approveSignMessageRequest: requests.approveSignMessageRequest, + rejectSignMessageRequest: requests.rejectSignMessageRequest, handleTonConnectUrl: tonconnect.handleTonConnectUrl, connectionEventFromUrl: tonconnect.connectionEventFromUrl, diff --git a/packages/walletkit-android-bridge/src/api/initialization.ts b/packages/walletkit-android-bridge/src/api/initialization.ts index 0266f3772..01ce0e65c 100644 --- a/packages/walletkit-android-bridge/src/api/initialization.ts +++ b/packages/walletkit-android-bridge/src/api/initialization.ts @@ -18,6 +18,7 @@ import type { RequestErrorEvent, SendTransactionRequestEvent, SignDataRequestEvent, + SignMessageRequestEvent, } from '@ton/walletkit'; import type { WalletKitBridgeInitConfig, SetEventsListenersArgs, WalletKitBridgeEventCallback } from '../types'; @@ -84,6 +85,16 @@ export async function setEventsListeners(args?: SetEventsListenersArgs): Promise kit.onSignDataRequest(eventListeners.onSignDataListener); + if (eventListeners.onSignMessageListener) { + kit.removeSignMessageRequestCallback(); + } + + eventListeners.onSignMessageListener = (event: SignMessageRequestEvent) => { + callback('signMessageRequest', event); + }; + + kit.onSignMessageRequest(eventListeners.onSignMessageListener); + if (eventListeners.onDisconnectListener) { kit.removeDisconnectCallback(); } @@ -129,6 +140,11 @@ export async function removeEventListeners(): Promise<{ ok: true }> { eventListeners.onSignDataListener = null; } + if (eventListeners.onSignMessageListener) { + kit.removeSignMessageRequestCallback(); + eventListeners.onSignMessageListener = null; + } + if (eventListeners.onDisconnectListener) { kit.removeDisconnectCallback(); eventListeners.onDisconnectListener = null; diff --git a/packages/walletkit-android-bridge/src/api/requests.ts b/packages/walletkit-android-bridge/src/api/requests.ts index c5512ae2c..ef84bbb85 100644 --- a/packages/walletkit-android-bridge/src/api/requests.ts +++ b/packages/walletkit-android-bridge/src/api/requests.ts @@ -31,3 +31,11 @@ export async function approveSignDataRequest(args: unknown[]) { export async function rejectSignDataRequest(args: unknown[]) { return kit('rejectSignDataRequest', ...args); } + +export async function approveSignMessageRequest(args: unknown[]) { + return kit('approveSignMessageRequest', ...args); +} + +export async function rejectSignMessageRequest(args: unknown[]) { + return kit('rejectSignMessageRequest', ...args); +} diff --git a/packages/walletkit-android-bridge/src/types/api.ts b/packages/walletkit-android-bridge/src/types/api.ts index 49600247f..bdfbe4e14 100644 --- a/packages/walletkit-android-bridge/src/types/api.ts +++ b/packages/walletkit-android-bridge/src/types/api.ts @@ -185,6 +185,18 @@ export interface RejectSignDataRequestArgs { reason?: string; } +export interface ApproveSignMessageRequestArgs { + event: TonConnectRequestEvent; + response?: { + internalBoc: string; + }; +} + +export interface RejectSignMessageRequestArgs { + event: TonConnectRequestEvent; + reason?: string; +} + export interface DisconnectSessionArgs { sessionId?: string; } @@ -442,6 +454,8 @@ export interface WalletKitBridgeApi { rejectTransactionRequest(args: RejectTransactionRequestArgs): PromiseOrValue<{ success: boolean }>; approveSignDataRequest(args: ApproveSignDataRequestArgs): PromiseOrValue<{ signature: string; timestamp: number }>; rejectSignDataRequest(args: RejectSignDataRequestArgs): PromiseOrValue<{ success: boolean }>; + approveSignMessageRequest(args: ApproveSignMessageRequestArgs): PromiseOrValue<{ internalBoc: string }>; + rejectSignMessageRequest(args: RejectSignMessageRequestArgs): PromiseOrValue<{ success: boolean }>; listSessions(): PromiseOrValue<{ items: TONConnectSession[] }>; disconnectSession(args?: DisconnectSessionArgs): PromiseOrValue<{ ok: boolean }>; getNfts(args: GetNftsArgs): PromiseOrValue; diff --git a/packages/walletkit-android-bridge/src/types/events.ts b/packages/walletkit-android-bridge/src/types/events.ts index 3fd100b3f..1c71a33c6 100644 --- a/packages/walletkit-android-bridge/src/types/events.ts +++ b/packages/walletkit-android-bridge/src/types/events.ts @@ -11,6 +11,7 @@ export type WalletKitBridgeEventType = | 'connectRequest' | 'transactionRequest' | 'signDataRequest' + | 'signMessageRequest' | 'disconnect' | 'requestError' | 'browserPageStarted'