fix(settings): avoid stale viewSettings after saving, closes #2912 (#2916)

This commit is contained in:
Huang Xin
2026-01-11 16:47:36 +01:00
committed by GitHub
parent f53cee9616
commit 4a624e3902
2 changed files with 7 additions and 4 deletions
@@ -249,15 +249,17 @@ const LayoutPanel: React.FC<SettingsPanelPanelProp> = ({ bookKey, onRegisterRese
useEffect(() => {
if (maxColumnCount === viewSettings.maxColumnCount) return;
saveViewSettings(envConfig, bookKey, 'maxColumnCount', maxColumnCount, false, false);
const newViewSettings = getViewSettings(bookKey)!;
view?.renderer.setAttribute('max-column-count', maxColumnCount);
view?.renderer.setAttribute('max-inline-size', `${getMaxInlineSize(viewSettings)}px`);
view?.renderer.setAttribute('max-inline-size', `${getMaxInlineSize(newViewSettings)}px`);
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [maxColumnCount]);
useEffect(() => {
if (maxInlineSize === viewSettings.maxInlineSize) return;
saveViewSettings(envConfig, bookKey, 'maxInlineSize', maxInlineSize, false, false);
view?.renderer.setAttribute('max-inline-size', `${getMaxInlineSize(viewSettings)}px`);
const newViewSettings = getViewSettings(bookKey)!;
view?.renderer.setAttribute('max-inline-size', `${getMaxInlineSize(newViewSettings)}px`);
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [maxInlineSize]);
@@ -279,7 +281,8 @@ const LayoutPanel: React.FC<SettingsPanelPanelProp> = ({ bookKey, onRegisterRese
}
saveViewSettings(envConfig, bookKey, 'writingMode', writingMode, true).then(() => {
if (view) {
view.renderer.setStyles?.(getStyles(viewSettings));
const newViewSettings = getViewSettings(bookKey)!;
view.renderer.setStyles?.(getStyles(newViewSettings));
view.book.dir = getBookDirFromWritingMode(writingMode);
}
if (
+1 -1
View File
@@ -39,11 +39,11 @@ export const saveViewSettings = async <K extends keyof ViewSettings>(
if (isSettingsGlobal && !skipGlobal) {
settings.globalViewSettings[key] = value;
setSettings(settings);
await saveSettings(envConfig, settings);
for (const bookKey of bookKeys) {
await applyViewSettings(bookKey);
}
await saveSettings(envConfig, settings);
} else if (bookKey) {
await applyViewSettings(bookKey);
}