@iexec/web3telegram
Version:
Enables secure, blockchain-based messaging by encrypting Telegram user IDs for privacy. It lets users message Ethereum account holders without knowing their Telegram details.
37 lines • 1.8 kB
JavaScript
function bnToNumber(bn) {
return Number(bn.toString());
}
export function checkUserVoucher({ userVoucher, }) {
if (bnToNumber(userVoucher.expirationTimestamp) < Date.now() / 1000) {
throw new Error('Oops, it seems your voucher has expired. You might want to ask for a top up. Check on https://builder.iex.ec/');
}
if (bnToNumber(userVoucher.balance) === 0) {
throw new Error('Oops, it seems your voucher is empty. You might want to ask for a top up. Check on https://builder.iex.ec/');
}
}
export function filterWorkerpoolOrders({ workerpoolOrders, workerpoolMaxPrice, useVoucher, userVoucher, }) {
if (workerpoolOrders.length === 0) {
return null;
}
let eligibleWorkerpoolOrders = [...workerpoolOrders];
let maxVoucherSponsoredAmount = 0; // may be safer to use bigint
if (useVoucher) {
if (!userVoucher) {
throw new Error('useVoucher === true but userVoucher is undefined? Hum...');
}
// only voucher sponsored workerpoolorders
eligibleWorkerpoolOrders = eligibleWorkerpoolOrders.filter(({ order }) => userVoucher.sponsoredWorkerpools.includes(order.workerpool));
if (eligibleWorkerpoolOrders.length === 0) {
throw new Error('Found some workerpool orders but none can be sponsored by your voucher.');
}
maxVoucherSponsoredAmount = bnToNumber(userVoucher.balance);
}
const [cheapestOrder] = eligibleWorkerpoolOrders.sort((order1, order2) => order1.order.workerpoolprice - order2.order.workerpoolprice);
if (!cheapestOrder ||
cheapestOrder.order.workerpoolprice >
workerpoolMaxPrice + maxVoucherSponsoredAmount) {
return null;
}
return cheapestOrder.order;
}
//# sourceMappingURL=sendTelegram.models.js.map