Improve local filetree view state and sidebar performance
This commit is contained in:
@@ -45,25 +45,15 @@ export function createSidebarPageSettingsRuntime(context) {
|
||||
}
|
||||
|
||||
function readGlobalShowHeadingNumbers() {
|
||||
try {
|
||||
var raw = window.localStorage ? window.localStorage.getItem(MNOTE_GLOBAL_SHOW_HEADING_NUMBERS_KEY) : '';
|
||||
return raw === 'true' || raw === '1';
|
||||
} catch (_) {
|
||||
return false;
|
||||
}
|
||||
return Boolean(currentPageOptions().showHeadingNumbers);
|
||||
}
|
||||
|
||||
function writeGlobalShowHeadingNumbers(value) {
|
||||
try {
|
||||
if (window.localStorage) {
|
||||
window.localStorage.setItem(MNOTE_GLOBAL_SHOW_HEADING_NUMBERS_KEY, value ? 'true' : 'false');
|
||||
}
|
||||
} catch (_) {}
|
||||
document.documentElement.setAttribute('data-global-show-heading-numbers', String(Boolean(value)));
|
||||
void persistPageOptionsPatch({ showHeadingNumbers: Boolean(value) });
|
||||
}
|
||||
|
||||
function effectiveShowHeadingNumbers(options) {
|
||||
return readGlobalShowHeadingNumbers();
|
||||
return Boolean(options && options.showHeadingNumbers);
|
||||
}
|
||||
|
||||
function pageOptionIsSupported(name) {
|
||||
@@ -161,7 +151,7 @@ export function createSidebarPageSettingsRuntime(context) {
|
||||
|
||||
function applyPageOptionsToShell() {
|
||||
var options = currentPageOptions();
|
||||
var globalShowHeadingNumbers = readGlobalShowHeadingNumbers();
|
||||
var globalShowHeadingNumbers = Boolean(options.showHeadingNumbers);
|
||||
var showHeadingNumbers = effectiveShowHeadingNumbers(options);
|
||||
var shell = document.querySelector('.document-shell');
|
||||
var editorRoot = document.querySelector('[data-testid="mnote-leptos-tiptap-island-editor-root"]');
|
||||
@@ -623,21 +613,27 @@ export function createSidebarPageSettingsRuntime(context) {
|
||||
applyPageOptionsToShell();
|
||||
renderPageSettingsPopover();
|
||||
try {
|
||||
var response = await fetch('/api/documents/options', {
|
||||
method: 'POST',
|
||||
var response = await fetch('/api/ui/preferences', {
|
||||
method: 'PUT',
|
||||
headers: { 'content-type': 'application/json' },
|
||||
body: JSON.stringify({
|
||||
documentId: currentDocumentId(),
|
||||
workspaceId: resolveWorkspaceId(document.body),
|
||||
...currentWorkspaceSourcePayload(),
|
||||
options: nextOptions,
|
||||
commandName: 'page.layout.updateOptions'
|
||||
updates: nextOptions
|
||||
})
|
||||
});
|
||||
var payload = await response.json().catch(function(){ return null; });
|
||||
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);
|
||||
}
|
||||
var savedOptions = payload && payload.result && payload.result.pageOptions && typeof payload.result.pageOptions === 'object'
|
||||
? Object.assign(defaultPageOptions(), payload.result.pageOptions)
|
||||
: nextOptions;
|
||||
pageUiState.pageOptions = Object.assign({}, savedOptions);
|
||||
nextOptions = Object.assign({}, pageUiState.pageOptions);
|
||||
applyPageOptionsToShell();
|
||||
renderPageSettingsPopover();
|
||||
var script = document.getElementById('__MNOTE_PAGE_AGGREGATE__');
|
||||
if (script) {
|
||||
try {
|
||||
|
||||
Reference in New Issue
Block a user