@kippurocks/libticketto-papi
Version:
A Kippu implementation of The Ticketto Protocol with Polkadot-API
87 lines (86 loc) • 4.1 kB
JavaScript
;
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); }
};
var KippuAttendanceStorage_1;
Object.defineProperty(exports, "__esModule", { value: true });
exports.KippuAttendanceStorage = exports.KippuAttendanceCalls = void 0;
const inversify_1 = require("inversify");
const types_ts_1 = require("./types.js");
const polkadot_api_1 = require("polkadot-api");
const scale_ts_1 = require("scale-ts");
let KippuAttendanceCalls = class KippuAttendanceCalls {
settings;
kreivo;
constructor(settings, kreivo) {
this.settings = settings;
this.kreivo = kreivo;
}
async submit(xt) {
// Optimistic attempt. It tries to execute the attendance extrinsic. Within that,
// it'll attempt executing the contract.
const extrinsic = polkadot_api_1.Binary.fromBytes(xt);
const { success } = await this.kreivo.apis.BlockBuilder.apply_extrinsic(extrinsic);
if (!success) {
throw new Error("Invalid submission");
}
await new Promise((resolve, reject) => {
let sent = false;
this.settings.client.submitAndWatch(extrinsic.asHex()).subscribe({
next(value) {
switch (value.type) {
case "broadcasted":
sent = true;
return resolve();
}
},
complete() {
if (!sent) {
resolve();
}
},
error(err) {
reject(err);
},
});
});
}
};
exports.KippuAttendanceCalls = KippuAttendanceCalls;
exports.KippuAttendanceCalls = KippuAttendanceCalls = __decorate([
(0, inversify_1.injectable)(),
__param(0, (0, inversify_1.inject)(types_ts_1.TOKEN.SETTINGS)),
__param(1, (0, inversify_1.inject)(types_ts_1.TOKEN.KREIVO_API)),
__metadata("design:paramtypes", [Object, Object])
], KippuAttendanceCalls);
let KippuAttendanceStorage = class KippuAttendanceStorage {
static { KippuAttendanceStorage_1 = this; }
settings;
kreivo;
static attendancesCodec = (0, scale_ts_1.Tuple)(scale_ts_1.compact, (0, scale_ts_1.Vector)(scale_ts_1.u64));
constructor(settings, kreivo) {
this.settings = settings;
this.kreivo = kreivo;
}
async attendances(id, ticketId) {
const [attendancesForTicket] = (await this.kreivo.query.ListingsCatalog.Attribute.getValue([this.settings.storeId ?? 2, id], BigInt(ticketId), { type: "Pallet", value: undefined }, types_ts_1.ATTRIBUTE_KEYS.TICKETS.ATTENDANCES)) ?? [polkadot_api_1.Binary.fromHex("0x00")];
const [, attendances] = KippuAttendanceStorage_1.attendancesCodec.dec(attendancesForTicket.asBytes());
return attendances;
}
};
exports.KippuAttendanceStorage = KippuAttendanceStorage;
exports.KippuAttendanceStorage = KippuAttendanceStorage = KippuAttendanceStorage_1 = __decorate([
(0, inversify_1.injectable)(),
__param(0, (0, inversify_1.inject)(types_ts_1.TOKEN.SETTINGS)),
__param(1, (0, inversify_1.inject)(types_ts_1.TOKEN.KREIVO_API)),
__metadata("design:paramtypes", [Object, Object])
], KippuAttendanceStorage);