Files
ignis/packages/bridge/src/main.js

69 lines
1.7 KiB
JavaScript
Raw Normal View History

2026-06-06 19:28:17 +02:00
import { Plugin, TFile, TFolder } from "obsidian";
import {
showFilePicker,
addFileMenuItems,
addFolderMenuItems,
2026-06-06 19:28:17 +02:00
} from "./file-actions.js";
import {
patchSettingsModal,
unpatchSettingsModal,
2026-06-06 19:28:17 +02:00
} from "./settings/inject.js";
import * as pluginRegistry from "./plugin-registry.js";
import { initStatusBar } from "./status-bar.js";
import { WorkspacePickerModal } from "./workspace-picker.js";
import { startDemoGuards, stopDemoGuards } from "./demo-guards.js";
2026-03-27 19:53:19 +01:00
class IgnisBridgePlugin extends Plugin {
async onload() {
if (!window.__ignis) {
console.log("[ignis-bridge] Not running in Ignis - plugin is a no-op.");
return;
}
2026-03-27 19:53:19 +01:00
console.log("[ignis-bridge] Plugin loaded");
await pluginRegistry.refresh();
2026-03-27 19:53:19 +01:00
patchSettingsModal(this);
2026-05-14 19:26:53 +02:00
startDemoGuards();
2026-03-30 01:05:20 +02:00
this._statusBarInterval = initStatusBar(this);
2026-03-27 19:53:19 +01:00
this.addRibbonIcon("upload", "Upload file", () => {
showFilePicker(this.app);
});
2026-04-03 12:19:24 +02:00
this.addCommand({
id: "open-workspace-in-new-tab",
name: "Open workspace in new tab",
callback: () => {
new WorkspacePickerModal(this.app).open();
},
});
2026-03-27 19:53:19 +01:00
this.registerEvent(
this.app.workspace.on("file-menu", (menu, file) => {
if (file instanceof TFile) {
addFileMenuItems(menu, file);
} else if (file instanceof TFolder) {
addFolderMenuItems(menu, file, this.app);
}
}),
);
}
onunload() {
if (!window.__ignis) {
return;
}
2026-03-30 01:05:20 +02:00
if (this._statusBarInterval) {
clearInterval(this._statusBarInterval);
}
2026-03-27 19:53:19 +01:00
unpatchSettingsModal(this);
2026-05-14 19:26:53 +02:00
stopDemoGuards();
2026-03-27 19:53:19 +01:00
console.log("[ignis-bridge] Plugin unloaded");
}
}
2026-06-06 19:28:17 +02:00
export default IgnisBridgePlugin;