server status bar indicator
This commit is contained in:
parent
4a4d904420
commit
cfe0f7f1b9
3 changed files with 79 additions and 0 deletions
|
|
@ -2,6 +2,7 @@ const { Plugin, TFile, TFolder } = require("obsidian");
|
||||||
const { showFilePicker, addFileMenuItems, addFolderMenuItems } = require("./file-actions");
|
const { showFilePicker, addFileMenuItems, addFolderMenuItems } = require("./file-actions");
|
||||||
const { patchSettingsModal, unpatchSettingsModal } = require("./settings/inject");
|
const { patchSettingsModal, unpatchSettingsModal } = require("./settings/inject");
|
||||||
const pluginRegistry = require("./plugin-registry");
|
const pluginRegistry = require("./plugin-registry");
|
||||||
|
const { initStatusBar } = require("./status-bar");
|
||||||
|
|
||||||
window.__obsidianAPI = require("obsidian");
|
window.__obsidianAPI = require("obsidian");
|
||||||
|
|
||||||
|
|
@ -11,6 +12,7 @@ class IgnisBridgePlugin extends Plugin {
|
||||||
|
|
||||||
await pluginRegistry.refresh();
|
await pluginRegistry.refresh();
|
||||||
patchSettingsModal(this);
|
patchSettingsModal(this);
|
||||||
|
this._statusBarInterval = initStatusBar(this);
|
||||||
|
|
||||||
this.addRibbonIcon("upload", "Upload file", () => {
|
this.addRibbonIcon("upload", "Upload file", () => {
|
||||||
showFilePicker(this.app);
|
showFilePicker(this.app);
|
||||||
|
|
@ -28,6 +30,10 @@ class IgnisBridgePlugin extends Plugin {
|
||||||
}
|
}
|
||||||
|
|
||||||
onunload() {
|
onunload() {
|
||||||
|
if (this._statusBarInterval) {
|
||||||
|
clearInterval(this._statusBarInterval);
|
||||||
|
}
|
||||||
|
|
||||||
unpatchSettingsModal(this);
|
unpatchSettingsModal(this);
|
||||||
console.log("[ignis-bridge] Plugin unloaded");
|
console.log("[ignis-bridge] Plugin unloaded");
|
||||||
}
|
}
|
||||||
|
|
|
||||||
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 };
|
||||||
|
|
@ -105,6 +105,31 @@
|
||||||
color: var(--text-muted);
|
color: var(--text-muted);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.ignis-statusbar-item {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
cursor: default;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ignis-statusbar-dot {
|
||||||
|
display: inline-block;
|
||||||
|
width: 8px;
|
||||||
|
height: 8px;
|
||||||
|
border-radius: 50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ignis-statusbar-connected {
|
||||||
|
background-color: var(--color-green);
|
||||||
|
}
|
||||||
|
|
||||||
|
.ignis-statusbar-connecting {
|
||||||
|
background-color: var(--color-yellow);
|
||||||
|
}
|
||||||
|
|
||||||
|
.ignis-statusbar-disconnected {
|
||||||
|
background-color: var(--color-red);
|
||||||
|
}
|
||||||
|
|
||||||
.ignis-plugins-description {
|
.ignis-plugins-description {
|
||||||
padding: 0 16px;
|
padding: 0 16px;
|
||||||
color: var(--text-muted);
|
color: var(--text-muted);
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue