@funded-labs/dab-js
Version:
JS adapter for DAB
68 lines (67 loc) • 3.24 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const agent_1 = require("@dfinity/agent");
const departure_labs_did_1 = __importDefault(require("../../idls/departure_labs.did"));
const default_1 = __importDefault(require("./default"));
const standards_1 = require("../../constants/standards");
class DepartureLabs extends default_1.default {
constructor(canisterId, agent, blsVerify) {
super(canisterId, agent);
this.standard = standards_1.NFT.departuresLabs;
this.serializeTokenData = (tokenData) => ({
index: BigInt(tokenData.id),
canister: this.canisterId,
url: `https://${this.canisterId}.raw.icp0.io/nft/${tokenData.id}`,
metadata: tokenData,
standard: this.standard,
});
this.actor = agent_1.Actor.createActor(departure_labs_did_1.default, {
agent,
canisterId,
blsVerify,
});
}
getMetadata() {
throw new Error('Method not implemented.');
}
getUserTokens(principal) {
return __awaiter(this, void 0, void 0, function* () {
const tokensIndexes = yield this.actor.balanceOf(principal);
const tokensData = yield Promise.all(tokensIndexes.map((tokenIndex) => __awaiter(this, void 0, void 0, function* () {
const userTokensResult = yield this.actor.tokenMetadataByIndex(tokenIndex);
if ('err' in userTokensResult)
throw new Error(Object.keys(userTokensResult.err)[0]);
return userTokensResult.ok;
})));
return tokensData.map((token) => this.serializeTokenData(token));
});
}
transfer(to, tokenIndex) {
return __awaiter(this, void 0, void 0, function* () {
const transferResult = yield this.actor.transfer(to, tokenIndex.toString(10));
if ('err' in transferResult)
throw new Error(Object.keys(transferResult.err)[0]);
});
}
details(tokenIndex) {
return __awaiter(this, void 0, void 0, function* () {
const tokenData = yield this.actor.tokenMetadataByIndex(tokenIndex.toString(10));
if ('err' in tokenData)
throw new Error(Object.keys(tokenData.err)[0]);
return this.serializeTokenData(tokenData.ok);
});
}
}
exports.default = DepartureLabs;