Fix local markdown title option persistence
This commit is contained in:
@@ -163,8 +163,13 @@ import {
|
|||||||
const syncPageAggregateScript = (session, aggregate) => {
|
const syncPageAggregateScript = (session, aggregate) => {
|
||||||
if (!session || !aggregate) return;
|
if (!session || !aggregate) return;
|
||||||
const scriptId = session.pageAggregateScriptId || '__MNOTE_PAGE_AGGREGATE__';
|
const scriptId = session.pageAggregateScriptId || '__MNOTE_PAGE_AGGREGATE__';
|
||||||
const node = document.getElementById(scriptId);
|
let node = document.getElementById(scriptId);
|
||||||
if (!node) return;
|
if (!node) {
|
||||||
|
node = document.createElement('script');
|
||||||
|
node.id = scriptId;
|
||||||
|
node.type = 'application/json';
|
||||||
|
document.body.appendChild(node);
|
||||||
|
}
|
||||||
try {
|
try {
|
||||||
node.textContent = JSON.stringify(aggregate);
|
node.textContent = JSON.stringify(aggregate);
|
||||||
node.setAttribute('data-mnote-page-aggregate-synced-at', String(Date.now()));
|
node.setAttribute('data-mnote-page-aggregate-synced-at', String(Date.now()));
|
||||||
@@ -343,6 +348,7 @@ import {
|
|||||||
}
|
}
|
||||||
const aggregate = options.aggregate || await fetchPageAggregateForPane(descriptor);
|
const aggregate = options.aggregate || await fetchPageAggregateForPane(descriptor);
|
||||||
const bootstrap = buildBootstrapFromAggregate(aggregate, descriptor, paneRole);
|
const bootstrap = buildBootstrapFromAggregate(aggregate, descriptor, paneRole);
|
||||||
|
syncPageAggregateScript({ pageAggregateScriptId: bootstrap.pageAggregateScriptId }, aggregate);
|
||||||
const runtimeDescriptor = { paneRole, root, observability, aggregate, bootstrap };
|
const runtimeDescriptor = { paneRole, root, observability, aggregate, bootstrap };
|
||||||
updatePaneChrome(runtimeDescriptor);
|
updatePaneChrome(runtimeDescriptor);
|
||||||
if (paneRole === 'secondary' && workspace instanceof HTMLElement) {
|
if (paneRole === 'secondary' && workspace instanceof HTMLElement) {
|
||||||
|
|||||||
@@ -638,6 +638,19 @@ export function createSidebarPageSettingsRuntime(context) {
|
|||||||
if (!response.ok || !payload || payload.ok !== true) {
|
if (!response.ok || !payload || payload.ok !== true) {
|
||||||
throw new Error(payload && payload.error && payload.error.message ? payload.error.message : 'page_settings_save_failed_' + response.status);
|
throw new Error(payload && payload.error && payload.error.message ? payload.error.message : 'page_settings_save_failed_' + response.status);
|
||||||
}
|
}
|
||||||
|
var script = document.getElementById('__MNOTE_PAGE_AGGREGATE__');
|
||||||
|
if (script) {
|
||||||
|
try {
|
||||||
|
var aggregate = JSON.parse(script.textContent || 'null');
|
||||||
|
if (aggregate && typeof aggregate === 'object') {
|
||||||
|
aggregate.layout = aggregate.layout && typeof aggregate.layout === 'object' ? aggregate.layout : {};
|
||||||
|
aggregate.layout.pageOptions = Object.assign({}, nextOptions);
|
||||||
|
aggregate.layout_options = Object.assign({}, nextOptions);
|
||||||
|
script.textContent = JSON.stringify(aggregate);
|
||||||
|
script.setAttribute('data-mnote-page-options-synced-at', String(Date.now()));
|
||||||
|
}
|
||||||
|
} catch (_) {}
|
||||||
|
}
|
||||||
document.documentElement.setAttribute('data-mnote-page-options-saved', 'true');
|
document.documentElement.setAttribute('data-mnote-page-options-saved', 'true');
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
pageUiState.pageOptions = previous;
|
pageUiState.pageOptions = previous;
|
||||||
|
|||||||
@@ -2764,6 +2764,9 @@ import { createSidebarPageSettingsRuntime } from './sidebar-page-settings-runtim
|
|||||||
schedulePendingLocalFolderRestoreFocus();
|
schedulePendingLocalFolderRestoreFocus();
|
||||||
window.addEventListener('mnote:primary-document-activated', function(event) {
|
window.addEventListener('mnote:primary-document-activated', function(event) {
|
||||||
var detail = event && event.detail ? event.detail : {};
|
var detail = event && event.detail ? event.detail : {};
|
||||||
|
pageUiState.pageOptions = null;
|
||||||
|
applyPageOptionsToShell();
|
||||||
|
if (isPageSettingsOpen()) renderPageSettingsPopover();
|
||||||
selectSidebarFileTreeDocument(detail.documentId, { scrollIntoView: false });
|
selectSidebarFileTreeDocument(detail.documentId, { scrollIntoView: false });
|
||||||
});
|
});
|
||||||
restoreSidebarTreeTab();
|
restoreSidebarTreeTab();
|
||||||
|
|||||||
@@ -2409,6 +2409,9 @@ mod tests {
|
|||||||
assert!(DOCUMENT_SESSION_RUNTIME_JS.contains("createDocumentSessionRuntime"));
|
assert!(DOCUMENT_SESSION_RUNTIME_JS.contains("createDocumentSessionRuntime"));
|
||||||
assert!(DOCUMENT_SESSION_RUNTIME_JS.contains("getOrCreateDocumentSession"));
|
assert!(DOCUMENT_SESSION_RUNTIME_JS.contains("getOrCreateDocumentSession"));
|
||||||
assert!(DOCUMENT_SESSION_RUNTIME_JS.contains("persistSession"));
|
assert!(DOCUMENT_SESSION_RUNTIME_JS.contains("persistSession"));
|
||||||
|
assert!(DOCUMENT_EDITOR_ADAPTER_RUNTIME_JS.contains("document.createElement('script')"));
|
||||||
|
assert!(DOCUMENT_EDITOR_ADAPTER_RUNTIME_JS
|
||||||
|
.contains("syncPageAggregateScript({ pageAggregateScriptId"));
|
||||||
assert!(DOCUMENT_EDITOR_ADAPTER_RUNTIME_JS.contains("document-slash-position-runtime.js"));
|
assert!(DOCUMENT_EDITOR_ADAPTER_RUNTIME_JS.contains("document-slash-position-runtime.js"));
|
||||||
assert!(DOCUMENT_SLASH_POSITION_RUNTIME_JS.contains("observeSlashMenuPosition"));
|
assert!(DOCUMENT_SLASH_POSITION_RUNTIME_JS.contains("observeSlashMenuPosition"));
|
||||||
assert!(DOCUMENT_SLASH_POSITION_RUNTIME_JS.contains("scheduleSlashMenuPosition"));
|
assert!(DOCUMENT_SLASH_POSITION_RUNTIME_JS.contains("scheduleSlashMenuPosition"));
|
||||||
|
|||||||
@@ -907,6 +907,8 @@ mod tests {
|
|||||||
assert!(SIDEBAR_TREE_RUNTIME_JS.contains("/api/dev/hot-reload"));
|
assert!(SIDEBAR_TREE_RUNTIME_JS.contains("/api/dev/hot-reload"));
|
||||||
assert!(SIDEBAR_TREE_RUNTIME_JS.contains("data-mnote-dev-hot-reload"));
|
assert!(SIDEBAR_TREE_RUNTIME_JS.contains("data-mnote-dev-hot-reload"));
|
||||||
assert!(SIDEBAR_TREE_RUNTIME_JS.contains("window.clearInterval(timer)"));
|
assert!(SIDEBAR_TREE_RUNTIME_JS.contains("window.clearInterval(timer)"));
|
||||||
|
assert!(SIDEBAR_TREE_RUNTIME_JS.contains("mnote:primary-document-activated"));
|
||||||
|
assert!(SIDEBAR_TREE_RUNTIME_JS.contains("pageUiState.pageOptions = null"));
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ function cargoWatchCommand(env = process.env) {
|
|||||||
const extraArgs = String(env.MNOTE_WEB_DEV_HOT_CARGO_WATCH_ARGS || "").trim();
|
const extraArgs = String(env.MNOTE_WEB_DEV_HOT_CARGO_WATCH_ARGS || "").trim();
|
||||||
const watchArgs = [
|
const watchArgs = [
|
||||||
"-w crates/mnote-web/src",
|
"-w crates/mnote-web/src",
|
||||||
|
"-w crates/mnote-web/browser",
|
||||||
"-w crates/mnote-web/Cargo.toml",
|
"-w crates/mnote-web/Cargo.toml",
|
||||||
"-w Cargo.toml",
|
"-w Cargo.toml",
|
||||||
"-x \"run -p mnote-web --bin mnote-web\"",
|
"-x \"run -p mnote-web --bin mnote-web\"",
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ assert.equal(env.MNOTE_WEB_DEV_HOT_RELOAD, "1");
|
|||||||
assert.match(env.MNOTE_WEB_CMD, /cargo watch/);
|
assert.match(env.MNOTE_WEB_CMD, /cargo watch/);
|
||||||
assert.match(env.MNOTE_WEB_CMD, /run -p mnote-web --bin mnote-web/);
|
assert.match(env.MNOTE_WEB_CMD, /run -p mnote-web --bin mnote-web/);
|
||||||
assert.match(env.MNOTE_WEB_CMD, /crates\/mnote-web\/src/);
|
assert.match(env.MNOTE_WEB_CMD, /crates\/mnote-web\/src/);
|
||||||
|
assert.match(env.MNOTE_WEB_CMD, /crates\/mnote-web\/browser/);
|
||||||
assert.equal(env.FRONTEND_PORT, "3200");
|
assert.equal(env.FRONTEND_PORT, "3200");
|
||||||
|
|
||||||
console.log(JSON.stringify({ ok: true, command: env.MNOTE_WEB_CMD }, null, 2));
|
console.log(JSON.stringify({ ok: true, command: env.MNOTE_WEB_CMD }, null, 2));
|
||||||
|
|||||||
Reference in New Issue
Block a user