UNPKG

@kippurocks/libticketto-papi

Version:

A Kippu implementation of The Ticketto Protocol with Polkadot-API

111 lines (110 loc) 4.82 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; var __param = (this && this.__param) || function (paramIndex, decorator) { return function (target, key) { decorator(target, key, paramIndex); } }; Object.defineProperty(exports, "__esModule", { value: true }); exports.TransactionSubmitter = void 0; const inversify_1 = require("inversify"); const types_ts_1 = require("./types.js"); const polkadot_api_1 = require("polkadot-api"); const substrate_bindings_1 = require("@polkadot-api/substrate-bindings"); let TransactionSubmitter = class TransactionSubmitter { client; api; accountProvider; constructor(client, api, accountProvider) { this.client = client; this.api = api; this.accountProvider = accountProvider; } signTx(tx) { return this.accountProvider.sign(tx); } async quickSubmit(tx) { // Note that the signer returns a `Vec<u8>` that // contains the encoded extrinsic, and not the // encoded extrinsic itself. We need to decode it // to pass it to the validator method. const extrinsicBytes = substrate_bindings_1.Bytes.dec()(tx.asBytes()); let result; try { result = await this.api.apis .BlockBuilder.apply_extrinsic(polkadot_api_1.Binary.fromBytes(extrinsicBytes)); } catch (cause) { throw new Error("ClientError", { cause }); } if (!result.success) { throw new Error("InvalidTransaction"); } if (!result.value.success) { throw result.value.value; } const { resolve, reject, promise } = Promise.withResolvers(); this.client.submitAndWatch(tx.asHex()).subscribe({ next(value) { switch (value.type) { case "broadcasted": return resolve(); } }, error(err) { return reject(err); }, }); return promise; } async signAndSubmit(tx) { const extrinsic = polkadot_api_1.Binary.fromBytes(await this.accountProvider.sign(tx)); // const queue = this.queue; const { resolve, reject, promise } = Promise.withResolvers(); this.client.submitAndWatch(extrinsic.asHex()).subscribe({ next(value) { switch (value.type) { case "txBestBlocksState": // TODO: Handle passing events to the client queue. // // to get the events and deposit them on the events queue // for (const event of value.events) { // switch (event.type) { // case "Contracts": // switch (event.value.type) { // case "ContractEmitted": // queue.depositEvent({ // type: "AttendanceMarked", // id: BigInt(0), // issuer: 0, // owner: "", // time: BigInt(Date.now()), // }); // break; // } // break; // } // } return resolve(); } }, error(err) { return reject(err); }, }); return promise; } }; exports.TransactionSubmitter = TransactionSubmitter; exports.TransactionSubmitter = TransactionSubmitter = __decorate([ (0, inversify_1.injectable)(), __param(0, (0, inversify_1.inject)(types_ts_1.TOKEN.POLKADOT_CLIENT)), __param(1, (0, inversify_1.inject)(types_ts_1.TOKEN.KREIVO_API)), __param(2, (0, inversify_1.inject)(types_ts_1.TOKEN.ACCUNT_PROVIDER)), __metadata("design:paramtypes", [Object, Object, Object]) ], TransactionSubmitter);