Add requestTransactionNowait()

main
Vitaliy Filippov 2023-03-10 18:27:13 +03:00
parent 88091851fe
commit f8ee2c1ff2
1 changed files with 24 additions and 8 deletions

View File

@ -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<TonhubTransactionResponse> => {
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<TonhubTransactionJob> => {
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<TonhubSignResponse> => {