From f1874434def64101d93a17787bf66dab497aca63 Mon Sep 17 00:00:00 2001 From: pa Date: Mon, 12 Jan 2026 11:15:25 +0900 Subject: [PATCH] fix sidebar custom width issue --- .../useAuthenticatedLayoutResizable.js | 34 ++++++++++++++++--- 1 file changed, 30 insertions(+), 4 deletions(-) diff --git a/src/composables/useAuthenticatedLayoutResizable.js b/src/composables/useAuthenticatedLayoutResizable.js index 46d79e2e..c640b67c 100644 --- a/src/composables/useAuthenticatedLayoutResizable.js +++ b/src/composables/useAuthenticatedLayoutResizable.js @@ -3,6 +3,8 @@ import { storeToRefs } from 'pinia'; import { useAppearanceSettingsStore } from '../stores'; +import configRepository from '../service/config'; + export function useAuthenticatedLayoutResizable() { const navCollapsedPx = 64; const navDefaultPx = 240; @@ -162,10 +164,34 @@ export function useAuthenticatedLayoutResizable() { return; } - const storedAsidePx = asideWidth.value; - const asideTargetSize = - storedAsidePx > 0 ? pxToPercent(storedAsidePx, width, 0) : 0; - resizeAsidePanel(asideTargetSize); + void syncAsidePanelWidth(width); + }; + + let asideSyncPromise = null; + const syncAsidePanelWidth = async (width) => { + if (asideSyncPromise) { + return asideSyncPromise; + } + asideSyncPromise = (async () => { + const storedAsidePx = await configRepository.getInt( + 'VRCX_sidePanelWidth', + asideWidth.value + ); + if ( + Number.isFinite(storedAsidePx) && + storedAsidePx !== asideWidth.value + ) { + setAsideWidth(storedAsidePx); + } + const asideTargetSize = + storedAsidePx > 0 ? pxToPercent(storedAsidePx, width, 0) : 0; + resizeAsidePanel(asideTargetSize); + })(); + try { + return await asideSyncPromise; + } finally { + asideSyncPromise = null; + } }; watch(isNavCollapsed, async (collapsed) => {