mirror of
https://github.com/Nystik-gh/ignis.git
synced 2026-06-17 04:35:53 +00:00
server status bar indicator
This commit is contained in:
48
plugin/src/status-bar.js
Normal file
48
plugin/src/status-bar.js
Normal file
@@ -0,0 +1,48 @@
|
||||
function getWsStatus() {
|
||||
const ws = window.__ignisWs;
|
||||
|
||||
if (!ws) {
|
||||
return "disconnected";
|
||||
}
|
||||
|
||||
switch (ws.readyState) {
|
||||
case WebSocket.CONNECTING:
|
||||
return "connecting";
|
||||
case WebSocket.OPEN:
|
||||
return "connected";
|
||||
default:
|
||||
return "disconnected";
|
||||
}
|
||||
}
|
||||
|
||||
const STATUS_LABELS = {
|
||||
connected: "Ignis server: Connected",
|
||||
connecting: "Ignis server: Connecting...",
|
||||
disconnected: "Ignis server: Disconnected",
|
||||
};
|
||||
|
||||
function initStatusBar(plugin) {
|
||||
const item = plugin.addStatusBarItem();
|
||||
item.addClass("ignis-statusbar-item");
|
||||
|
||||
const dot = item.createEl("span", {
|
||||
cls: "ignis-statusbar-dot",
|
||||
});
|
||||
|
||||
item.setAttribute("aria-label", "Ignis: Checking...");
|
||||
item.setAttribute("data-tooltip-position", "top");
|
||||
|
||||
const update = () => {
|
||||
const status = getWsStatus();
|
||||
dot.className = `ignis-statusbar-dot ignis-statusbar-${status}`;
|
||||
item.setAttribute("aria-label", STATUS_LABELS[status] || "Ignis: Unknown");
|
||||
};
|
||||
|
||||
update();
|
||||
|
||||
const interval = setInterval(update, 3000);
|
||||
|
||||
return interval;
|
||||
}
|
||||
|
||||
module.exports = { initStatusBar };
|
||||
Reference in New Issue
Block a user