From 3e2847f84478ffd06a2e250a17d4dbb3c0a5973a Mon Sep 17 00:00:00 2001 From: kashaf-ansari-dev Date: Tue, 14 Jul 2026 19:06:56 +0500 Subject: [PATCH] mobile: add fluid panels initialRoute to simplified navigation Signed-off-by: kashaf-ansari-dev --- .../app/navigation/fluid-panels-view.tsx | 20 +++---------------- .../app/navigation/navigation-stack.tsx | 17 +++++++++++++++- .../mobile/app/stores/use-navigation-store.ts | 2 +- 3 files changed, 20 insertions(+), 19 deletions(-) diff --git a/apps/mobile/app/navigation/fluid-panels-view.tsx b/apps/mobile/app/navigation/fluid-panels-view.tsx index 0a5472555..1292c6452 100644 --- a/apps/mobile/app/navigation/fluid-panels-view.tsx +++ b/apps/mobile/app/navigation/fluid-panels-view.tsx @@ -58,7 +58,6 @@ import { eCloseFullscreenEditor, eOnEnterEditor, eOnExitEditor, - eOnLoadNote, eOpenFullscreenEditor, eUnlockNote } from "../utils/events"; @@ -66,7 +65,7 @@ import { valueLimiter } from "../utils/functions"; import { fluidTabsRef } from "../utils/global-refs"; import { AppNavigationStack } from "./navigation-stack"; import type { PaneWidths } from "../screens/editor/wrapper"; -import Navigation from "../services/navigation"; +import { NavigationProps } from "../services/navigation"; const MOBILE_SIDEBAR_SIZE = 0.85; @@ -74,7 +73,7 @@ let SideMenu: any = null; let EditorWrapper: any = null; export const FluidPanelsView = React.memo( - () => { + ({ route }: NavigationProps<"FluidPanelsView">) => { const { colors } = useThemeColors(); const deviceMode = useSettingStore((state) => state.deviceMode); const setFullscreen = useSettingStore((state) => state.setFullscreen); @@ -91,19 +90,6 @@ export const FluidPanelsView = React.memo( ); const appLoading = useSettingStore((state) => state.isAppLoading); const [isLoading, setIsLoading] = useState(false); - const pendingShortcut = useSettingStore((state) => state.pendingShortcut); - const [initialPane] = useState(() => - pendingShortcut?.type === "notesnook.action.newnote" ? "editor" : "home" - ); - - useEffect(() => { - if (pendingShortcut?.type === "notesnook.action.newnote") { - eSendEvent(eOnLoadNote, { newNote: true }); - editorState().movedAway = false; - fluidTabsRef.current?.goToPage("editor", true); - useSettingStore.setState({ pendingShortcut: null }); - } - }, [pendingShortcut]); useDeviceOrientationChange((o) => { if ( @@ -346,7 +332,7 @@ export const FluidPanelsView = React.memo( dimensions={dimensions} widths={PANE_WIDTHS[deviceMode as keyof typeof PANE_WIDTHS]} enabled={deviceMode !== "tablet" && !fullscreen} - initialPage={initialPane} + initialPage={route.params?.initialPage} onScroll={onScroll} onChangeTab={onChangeTab} onDrawerStateChange={(state) => { diff --git a/apps/mobile/app/navigation/navigation-stack.tsx b/apps/mobile/app/navigation/navigation-stack.tsx index 6639c8a10..486bedf14 100644 --- a/apps/mobile/app/navigation/navigation-stack.tsx +++ b/apps/mobile/app/navigation/navigation-stack.tsx @@ -341,7 +341,16 @@ export const RootNavigation = () => { rootNavigatorRef.current?.navigate("AddReminder" as any); useSettingStore.setState({ pendingShortcut: null }); } else if (pendingShortcut.type === "notesnook.action.newnote") { - rootNavigatorRef.current?.navigate("FluidPanelsView" as any); + rootNavigatorRef.current?.navigate("FluidPanelsView" as any, { + initialPage: !fluidTabsRef.current ? "editor" : undefined + }); + + if (fluidTabsRef.current) { + eSendEvent(eOnLoadNote, { newNote: true }); + editorState().movedAway = false; + fluidTabsRef.current.goToPage("editor", true); + useSettingStore.setState({ pendingShortcut: null }); + } } }, [pendingShortcut]); @@ -384,6 +393,12 @@ export const RootNavigation = () => { require("../navigation/fluid-panels-view").default; return FluidPanelsView; }} + initialParams={{ + initialPage: + pendingShortcut?.type === "notesnook.action.newnote" + ? "editor" + : undefined + }} />