test-ic-wallet-middleware-icrc
Version:
Ic middleware wallet ICRC protocol
51 lines (50 loc) • 1.73 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.IndexWrapper = void 0;
const ledger_icrc_1 = require("@dfinity/ledger-icrc");
const icrcIndexError_1 = require("../../../errors/icrcIndexError");
class IndexWrapper {
icrcIndexCanister;
constructor(icrcIndexCanister) {
this.icrcIndexCanister = icrcIndexCanister;
}
static create(address) {
const icrcLedgerCanister = IndexWrapper.getIcrcIndexCanister(address);
return new IndexWrapper(icrcLedgerCanister);
}
async getTransactions(principal, subAccountId, pageInfo) {
try {
const startItem = this.getStartItem(pageInfo.nextPageKey);
const result = await this.icrcIndexCanister.getTransactions({
max_results: BigInt(pageInfo.take),
start: startItem,
account: {
owner: principal,
subaccount: subAccountId.toUint8Array()
}
});
return result.transactions;
}
catch (e) {
throw new icrcIndexError_1.IcrcIndexError("get.transactions", e.message);
}
}
getStartItem(nextPageKey) {
return nextPageKey ? BigInt(nextPageKey) : undefined;
}
static getIcrcIndexCanister(ledgerAddress) {
try {
const result = ledger_icrc_1.IcrcIndexCanister.create({
canisterId: ledgerAddress,
});
return result;
}
catch (e) {
if (e.message && e.message.toString().indexOf("Canister ID is required") > -1) {
throw e;
}
throw e;
}
}
}
exports.IndexWrapper = IndexWrapper;