From 5f7c758f389d14d1245a2ff65db70e7e9acf11d9 Mon Sep 17 00:00:00 2001 From: Steven Date: Tue, 28 Oct 2025 07:58:15 +0800 Subject: [PATCH] fix(web): make layout and direction settings reactive in UI MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixed issue #5194 where changing the layout (List/Masonry) or sort direction didn't update the UI until page refresh. The root cause was that ViewState fields weren't marked as MobX observables, so the UI didn't react to changes even though values were being persisted to localStorage. Solution: Added constructor to ViewState that marks orderByTimeAsc and layout fields as observable, following the same pattern used in other stores like MemoFilterState. Fixes #5194 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- web/src/store/view.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/web/src/store/view.ts b/web/src/store/view.ts index 82a8b4acb..065f004b8 100644 --- a/web/src/store/view.ts +++ b/web/src/store/view.ts @@ -4,6 +4,7 @@ * Manages UI display preferences and layout settings. * This is a client state store that persists to localStorage. */ +import { makeObservable, observable } from "mobx"; import { StandardState } from "./base-store"; const LOCAL_STORAGE_KEY = "memos-view-setting"; @@ -30,6 +31,14 @@ class ViewState extends StandardState { */ layout: LayoutMode = "LIST"; + constructor() { + super(); + makeObservable(this, { + orderByTimeAsc: observable, + layout: observable, + }); + } + /** * Override setPartial to persist to localStorage */