refactor bridge plugin into virtual module

This commit is contained in:
Nystik
2026-05-24 02:20:28 +02:00
parent 69f8320d05
commit 956a11d0cd
17 changed files with 225 additions and 148 deletions

View File

@@ -9,7 +9,6 @@ const fsp = fs.promises;
const path = require("path");
const zlib = require("zlib");
const config = require("../config");
const { isBridgePluginInstalled, getIgnisMeta } = require("../bridge-plugin");
const { getDiscoveredPlugins } = require("../plugin-system/manager");
const router = express.Router();
@@ -76,20 +75,13 @@ async function walkTree(rootPath) {
return { tree, dirMtimes };
}
async function buildVaultInfo(vaultId, vaultPath) {
const pluginInstalled = await isBridgePluginInstalled(vaultPath);
const ignisMeta = await getIgnisMeta(vaultPath);
function buildVaultInfo(vaultId, vaultPath) {
return {
id: vaultId,
name: vaultId,
path: vaultPath,
platform: process.platform,
version: config.obsidianVersion,
ignisPlugin: {
installed: pluginInstalled,
prompted: ignisMeta.pluginPrompted || false,
},
};
}
@@ -134,10 +126,8 @@ async function buildEntry(vaultId) {
}
const t0 = Date.now();
const [vault, { tree, dirMtimes }] = await Promise.all([
buildVaultInfo(vaultId, vaultPath),
walkTree(vaultPath),
]);
const vault = buildVaultInfo(vaultId, vaultPath);
const { tree, dirMtimes } = await walkTree(vaultPath);
const response = {
vault,

View File

@@ -2,12 +2,6 @@ const express = require("express");
const fs = require("fs");
const config = require("../config");
const path = require("path");
const {
isBridgePluginInstalled,
getIgnisMeta,
setIgnisMeta,
installBridgePlugin,
} = require("../bridge-plugin");
const bootstrapRoutes = require("./bootstrap");
const router = express.Router();
@@ -34,19 +28,12 @@ router.get("/info", async (req, res) => {
return res.status(404).json({ error: "Vault not found", id: vaultId });
}
const pluginInstalled = await isBridgePluginInstalled(vaultPath);
const ignisMeta = await getIgnisMeta(vaultPath);
res.json({
id: vaultId,
name: vaultId,
path: vaultPath,
platform: process.platform,
version: config.obsidianVersion,
ignisPlugin: {
installed: pluginInstalled,
prompted: ignisMeta.pluginPrompted || false,
},
});
});
@@ -66,8 +53,6 @@ router.post("/create", async (req, res) => {
recursive: false,
});
await installBridgePlugin(vaultPath);
config.refreshVaults();
bootstrapRoutes.invalidateVault(name);
@@ -138,42 +123,4 @@ router.delete("/remove", async (req, res) => {
}
});
// POST /api/vault/install-plugin { vault, dismiss } - install plugin or mark as prompted
router.post("/install-plugin", async (req, res) => {
const vaultId = req.body?.vault;
const dismiss = req.body?.dismiss || false;
if (!vaultId) {
return res.status(400).json({ error: "Missing vault ID" });
}
const vaultPath = config.getVaultPath(vaultId);
if (!vaultPath) {
return res.status(404).json({ error: "Vault not found" });
}
try {
const meta = await getIgnisMeta(vaultPath);
if (dismiss) {
// User clicked "Don't Ask Again" or "Not Now"
meta.pluginPrompted = true;
await setIgnisMeta(vaultPath, meta);
return res.json({ ok: true, prompted: true });
} else {
// User wants to install the plugin
const installed = await installBridgePlugin(vaultPath);
meta.pluginPrompted = true;
await setIgnisMeta(vaultPath, meta);
return res.json({ ok: true, installed, prompted: true });
}
} catch (e) {
res.status(500).json({ error: e.message, code: e.code });
}
});
module.exports = router;