diff --git a/src/App.tsx b/src/App.tsx index cade729..04934e0 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -15,8 +15,7 @@ import { getCurrentWindow } from '@tauri-apps/api/window'; import { initDownloadListener } from './store/downloadStore'; import { subscribeToSettingsPersistenceErrors, - useSettingsStore, - waitForSettingsPersistence + useSettingsStore } from "./store/useSettingsStore"; import { isPermissionGranted, requestPermission, sendNotification } from '@tauri-apps/plugin-notification'; import { WindowControls } from "./components/WindowControls"; @@ -40,9 +39,7 @@ import { changeAppLocale, localeDirection, resolveAppLocale, syncDocumentLocale import { useTranslation } from 'react-i18next'; import { formatDownloadBytes } from './utils/downloadProgress'; import { synchronizeDocumentAppearance } from './utils/documentAppearance'; -import { createMainWindowSizePersistence } from './utils/mainWindowState'; import { createSidebarResizeSession } from './utils/sidebarResize'; -import type { MainWindowSize } from './bindings/MainWindowSize'; import { beginSchedulerControl, consumeSchedulerHandoffIds, @@ -494,44 +491,14 @@ function App() { useEffect(() => { const disposePersistence = initializeDownloadPersistence(getCurrentWindow().label); let active = true; - let exitRequested = false; - let exiting = false; - let settingsHydrated = useSettingsStore.persist.hasHydrated(); - let latestSizeBeforeHydration: MainWindowSize | null = null; - const unlistenSettingsHydration = settingsHydrated - ? null - : useSettingsStore.persist.onFinishHydration(() => { - settingsHydrated = true; - const size = latestSizeBeforeHydration; - latestSizeBeforeHydration = null; - if (size && active && !exitRequested && !exiting) { - useSettingsStore.getState().setMainWindowSize(size); - } - }); - const mainWindowSizePersistence = createMainWindowSizePersistence({ - appWindow: getCurrentWindow(), - onSize: size => { - if (!active || exiting) return; - if (!settingsHydrated) { - latestSizeBeforeHydration = size; - return; - } - useSettingsStore.getState().setMainWindowSize(size); - } - }); let cleanupListeners: (() => void) | null = null; let unlistenExit: (() => void) | null = null; const exitListener = listen('app-exit-requested', async () => { - exitRequested = true; try { - await mainWindowSizePersistence.flush(); - await waitForSettingsPersistence(); await flushDownloadPersistence(); } catch (error) { console.error('Failed to flush download state before exit:', error); } finally { - exiting = true; - latestSizeBeforeHydration = null; await invoke('ack_frontend_exit').catch(error => { console.error('Failed to acknowledge frontend exit flush:', error); }); @@ -550,7 +517,6 @@ function App() { let unlistenDeepLink: (() => void) | null = null; const disposeListeners = () => { void queueFrontendReadyUpdate(false).catch(() => {}); - mainWindowSizePersistence.dispose(); unlistenExit?.(); unlistenExit = null; unlistenTerminalState?.(); @@ -756,8 +722,6 @@ function App() { cleanupListeners = null; unlistenExit?.(); unlistenExit = null; - unlistenSettingsHydration?.(); - mainWindowSizePersistence.dispose(); disposePersistence(); }; }, [addToast, enqueueAddInput, processExtensionDownload, queueFrontendReadyUpdate]);