From f8ee2c1ff20b7e0327542c6564af9af0e9ab3980 Mon Sep 17 00:00:00 2001 From: Vitaliy Filippov Date: Fri, 10 Mar 2023 18:27:13 +0300 Subject: [PATCH] Add requestTransactionNowait() --- src/connector/TonhubConnector.ts | 32 ++++++++++++++++++++++++-------- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/src/connector/TonhubConnector.ts b/src/connector/TonhubConnector.ts index 985732b..a83b9b1 100644 --- a/src/connector/TonhubConnector.ts +++ b/src/connector/TonhubConnector.ts @@ -125,6 +125,13 @@ export type TonhubTransactionResponse = { type: 'invalid_session' }; +export type TonhubTransactionJob = { + type: 'success', + boc: string, +} | { + type: 'invalid_session' +}; + export type TonhubSignRequest = { seed: string, appPublicKey: string, @@ -340,6 +347,22 @@ export class TonhubConnector { } requestTransaction = async (request: TonhubTransactionRequest): Promise => { + const job = await this.requestTransactionNowait(request); + if (job.type === 'invalid_session') { + return { type: 'invalid_session' }; + } + + // Await result + let result = await this._awaitJobState(request.appPublicKey, job.boc); + if (result.type === 'completed') { + return { type: 'success', response: result.result }; + } else if (result.type === 'rejected') { + return { type: 'rejected' }; + } + return { type: 'expired' }; + } + + requestTransactionNowait = async (request: TonhubTransactionRequest): Promise => { const sessionId = idFromSeed(request.seed); // Check session @@ -407,14 +430,7 @@ export class TonhubConnector { job: boc, })); - // Await result - let result = await this._awaitJobState(request.appPublicKey, boc); - if (result.type === 'completed') { - return { type: 'success', response: result.result }; - } else if (result.type === 'rejected') { - return { type: 'rejected' }; - } - return { type: 'expired' }; + return { type: 'success', boc }; } requestSign = async (request: TonhubSignRequest): Promise => {