make "open workspace in tab" actually load the workspace preset properly.
This commit is contained in:
parent
c1a169a3ed
commit
daa7bd6875
3 changed files with 55 additions and 4 deletions
|
|
@ -24,6 +24,7 @@ class WorkspacePickerModal extends FuzzySuggestModal {
|
||||||
const url = new URL(window.location.href);
|
const url = new URL(window.location.href);
|
||||||
|
|
||||||
url.searchParams.set("workspace", item);
|
url.searchParams.set("workspace", item);
|
||||||
|
url.searchParams.set("load", "preset");
|
||||||
window.open(url.toString(), "_blank");
|
window.open(url.toString(), "_blank");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,11 @@ import { installRequestUrlShim } from "./request-url.js";
|
||||||
import { vaultService } from "../services/vault-service.js";
|
import { vaultService } from "../services/vault-service.js";
|
||||||
import { showPluginInstallDialog } from "../ui/bootstrap.js";
|
import { showPluginInstallDialog } from "../ui/bootstrap.js";
|
||||||
import { registerReadTransform } from "./fs/transforms.js";
|
import { registerReadTransform } from "./fs/transforms.js";
|
||||||
import { resolveWorkspaceName, initWorkspacePatch } from "./workspace.js";
|
import {
|
||||||
|
resolveWorkspaceName,
|
||||||
|
loadPresetIfRequested,
|
||||||
|
initWorkspacePatch,
|
||||||
|
} from "./workspace.js";
|
||||||
import { prefetchVaultContent } from "./fs/indexer-prefetch.js";
|
import { prefetchVaultContent } from "./fs/indexer-prefetch.js";
|
||||||
|
|
||||||
function resolveVaultId() {
|
function resolveVaultId() {
|
||||||
|
|
@ -211,6 +215,7 @@ function initCoreSyncGuardFallback() {
|
||||||
export function initialize() {
|
export function initialize() {
|
||||||
resolveVaultId();
|
resolveVaultId();
|
||||||
resolveWorkspaceName();
|
resolveWorkspaceName();
|
||||||
|
loadPresetIfRequested();
|
||||||
|
|
||||||
const bootstrap = fetchBootstrap();
|
const bootstrap = fetchBootstrap();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -50,6 +50,42 @@ function setWorkspaceParam(name) {
|
||||||
history.replaceState(null, "", url.toString());
|
history.replaceState(null, "", url.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// When ?load=preset is set, copy the named preset from workspaces.json into this tab's per-workspace state file.
|
||||||
|
// This overwrites any stale state from a prior session.
|
||||||
|
// Then strip the param so a page reload doesn't keep resetting.
|
||||||
|
export function loadPresetIfRequested() {
|
||||||
|
const urlParams = new URLSearchParams(window.location.search);
|
||||||
|
|
||||||
|
if (urlParams.get("load") !== "preset" || !window.__workspaceName) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
const presetsText = fsShim.readFileSync(WORKSPACES_PATH, "utf-8");
|
||||||
|
const presets = JSON.parse(presetsText);
|
||||||
|
const preset =
|
||||||
|
presets.workspaces && presets.workspaces[window.__workspaceName];
|
||||||
|
|
||||||
|
if (!preset) {
|
||||||
|
console.warn(
|
||||||
|
"[ignis] load=preset requested but no preset found for:",
|
||||||
|
window.__workspaceName,
|
||||||
|
);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Path resolver routes this write to workspace.<name>.json.
|
||||||
|
fsShim.writeFileSync(WORKSPACE_PATH, JSON.stringify(preset), "utf-8");
|
||||||
|
console.log("[ignis] Loaded preset for workspace:", window.__workspaceName);
|
||||||
|
} catch (e) {
|
||||||
|
console.warn("[ignis] Failed to load preset:", e);
|
||||||
|
} finally {
|
||||||
|
const url = new URL(window.location.href);
|
||||||
|
url.searchParams.delete("load");
|
||||||
|
history.replaceState(null, "", url.toString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export function resolveWorkspaceName() {
|
export function resolveWorkspaceName() {
|
||||||
try {
|
try {
|
||||||
const vaultParam = window.__currentVaultId
|
const vaultParam = window.__currentVaultId
|
||||||
|
|
@ -64,7 +100,10 @@ export function resolveWorkspaceName() {
|
||||||
|
|
||||||
coreXhr.open(
|
coreXhr.open(
|
||||||
"GET",
|
"GET",
|
||||||
"/api/fs/readFile" + vaultParam + sep + "path=.obsidian/core-plugins.json&encoding=utf-8",
|
"/api/fs/readFile" +
|
||||||
|
vaultParam +
|
||||||
|
sep +
|
||||||
|
"path=.obsidian/core-plugins.json&encoding=utf-8",
|
||||||
false,
|
false,
|
||||||
);
|
);
|
||||||
coreXhr.send();
|
coreXhr.send();
|
||||||
|
|
@ -85,7 +124,10 @@ export function resolveWorkspaceName() {
|
||||||
|
|
||||||
xhr.open(
|
xhr.open(
|
||||||
"GET",
|
"GET",
|
||||||
"/api/fs/readFile" + vaultParam + sep + "path=.obsidian/workspaces.json&encoding=utf-8",
|
"/api/fs/readFile" +
|
||||||
|
vaultParam +
|
||||||
|
sep +
|
||||||
|
"path=.obsidian/workspaces.json&encoding=utf-8",
|
||||||
false,
|
false,
|
||||||
);
|
);
|
||||||
xhr.send();
|
xhr.send();
|
||||||
|
|
@ -195,7 +237,10 @@ export function initWorkspacePatch() {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
console.log("[ignis] Workspaces plugin patched, workspace:", window.__workspaceName || "(none)");
|
console.log(
|
||||||
|
"[ignis] Workspaces plugin patched, workspace:",
|
||||||
|
window.__workspaceName || "(none)",
|
||||||
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
observer.observe(document.documentElement, {
|
observer.observe(document.documentElement, {
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue