send-crypto
Version:
A minimal JavaScript library / wallet for sending crypto assets
39 lines • 2.94 kB
JavaScript
import { sleep } from "./retry";
export const subscribeToConfirmations = (promiEvent, cancelled, getConfirmations) => {
let mutex;
const watchForConfirmations = async () => {
const lock = Symbol();
mutex = lock;
// Yield to task manager to let the event subscription finish
await sleep(0);
let confirmations = 0;
while (!cancelled() && watchingConfirmations && mutex === lock) {
try {
const newConfirmations = await getConfirmations();
if (newConfirmations > confirmations) {
confirmations = newConfirmations;
promiEvent.emit("confirmation", confirmations);
}
}
catch (error) {
console.error(error);
}
await sleep(5000);
}
};
let watchingConfirmations = 0;
promiEvent.on("newListener", (eventName) => {
if (eventName === "confirmation") {
watchingConfirmations++;
if (watchingConfirmations === 1) {
watchForConfirmations();
}
}
});
promiEvent.on("removeListener", (eventName) => {
if (eventName === "confirmation") {
watchingConfirmations--;
}
});
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybWF0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvY29uZmlybWF0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRWhDLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLENBQ3BDLFVBQXlCLEVBQ3pCLFNBQXdCLEVBQ3hCLGdCQUF1QyxFQUN6QyxFQUFFO0lBQ0EsSUFBSSxLQUFLLENBQUM7SUFDVixNQUFNLHFCQUFxQixHQUFHLEtBQUssSUFBSSxFQUFFO1FBQ3JDLE1BQU0sSUFBSSxHQUFHLE1BQU0sRUFBRSxDQUFDO1FBQ3RCLEtBQUssR0FBRyxJQUFJLENBQUM7UUFFYiw2REFBNkQ7UUFDN0QsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFZixJQUFJLGFBQWEsR0FBRyxDQUFDLENBQUM7UUFDdEIsT0FBTyxDQUFDLFNBQVMsRUFBRSxJQUFJLHFCQUFxQixJQUFJLEtBQUssS0FBSyxJQUFJLEVBQUU7WUFDNUQsSUFBSTtnQkFDQSxNQUFNLGdCQUFnQixHQUFHLE1BQU0sZ0JBQWdCLEVBQUUsQ0FBQztnQkFDbEQsSUFBSSxnQkFBZ0IsR0FBRyxhQUFhLEVBQUU7b0JBQ2xDLGFBQWEsR0FBRyxnQkFBZ0IsQ0FBQztvQkFDakMsVUFBVSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsYUFBYSxDQUFDLENBQUM7aUJBQ2xEO2FBQ0o7WUFBQyxPQUFPLEtBQVUsRUFBRTtnQkFDakIsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUN4QjtZQUNELE1BQU0sS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3JCO0lBQ0wsQ0FBQyxDQUFDO0lBRUYsSUFBSSxxQkFBcUIsR0FBRyxDQUFDLENBQUM7SUFDOUIsVUFBVSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxTQUFTLEVBQUUsRUFBRTtRQUN2QyxJQUFJLFNBQVMsS0FBSyxjQUFjLEVBQUU7WUFDOUIscUJBQXFCLEVBQUUsQ0FBQztZQUN4QixJQUFJLHFCQUFxQixLQUFLLENBQUMsRUFBRTtnQkFDN0IscUJBQXFCLEVBQUUsQ0FBQzthQUMzQjtTQUNKO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxVQUFVLENBQUMsRUFBRSxDQUFDLGdCQUFnQixFQUFFLENBQUMsU0FBUyxFQUFFLEVBQUU7UUFDMUMsSUFBSSxTQUFTLEtBQUssY0FBYyxFQUFFO1lBQzlCLHFCQUFxQixFQUFFLENBQUM7U0FDM0I7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUMsQ0FBQyJ9