UNPKG

@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
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