Files
aerospike-gnome/src/utils/events.ts
T

22 lines
552 B
TypeScript

import GLib from "gi://GLib";
export type QueuedEvent = {
name: string;
callback: () => void;
}
const pendingEvents: Map<string, QueuedEvent> = new Map();
export default function queueEvent(event: QueuedEvent, interval = 200) {
pendingEvents.set(event.name, event);
GLib.timeout_add(GLib.PRIORITY_DEFAULT, interval, () => {
const e = pendingEvents.get(event.name);
if (e && e === event) {
pendingEvents.delete(event.name);
e.callback();
}
return GLib.SOURCE_REMOVE;
});
}