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' type: 'invalid_session'
}; };
export type TonhubTransactionJob = {
type: 'success',
boc: string,
} | {
type: 'invalid_session'
};
export type TonhubSignRequest = { export type TonhubSignRequest = {
seed: string, seed: string,
appPublicKey: string, appPublicKey: string,
@ -340,6 +347,22 @@ export class TonhubConnector {
} }
requestTransaction = async (request: TonhubTransactionRequest): Promise<TonhubTransactionResponse> => { 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); const sessionId = idFromSeed(request.seed);
// Check session // Check session
@ -407,14 +430,7 @@ export class TonhubConnector {
job: boc, job: boc,
})); }));
// Await result return { type: 'success', boc };
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' };
} }
requestSign = async (request: TonhubSignRequest): Promise<TonhubSignResponse> => { requestSign = async (request: TonhubSignRequest): Promise<TonhubSignResponse> => {