Files
ad/molodetz/static/js/utils/PresenceManager.js
T

26 lines
695 B
JavaScript

// retoor <retoor@molodetz.nl>
import { Http } from "./Http.js";
import { Poller } from "./Poller.js";
export class PresenceManager {
constructor() {
this.online = new Set();
this.poller = null;
if (document.querySelector("[data-presence-uid]")) {
this.poller = new Poller(() => this.refresh(), 20000, { immediate: false }).start();
}
}
async refresh() {
const roster = await Http.getJson("/presence/roster");
this.online = new Set(roster.online || []);
this.render();
}
render() {
document.querySelectorAll("[data-presence-uid]").forEach((dot) => {
dot.classList.toggle("online", this.online.has(dot.dataset.presenceUid));
});
}
}