diff --git a/apps/mobile/app/screens/editor/tiptap/use-editor.ts b/apps/mobile/app/screens/editor/tiptap/use-editor.ts index 53776bbca..e278870c9 100644 --- a/apps/mobile/app/screens/editor/tiptap/use-editor.ts +++ b/apps/mobile/app/screens/editor/tiptap/use-editor.ts @@ -749,12 +749,13 @@ export const useEditor = ( await postMessage(NativeEvents.title, item.title, tabId); overlay(false); + const updatedTab = useTabStore.getState().getTab(tabId!); await postMessage( NativeEvents.html, { data: currentContents.current[item.id]?.data || "", - scrollTop: tab?.session?.scrollTop, - selection: tab?.session?.selection, + scrollTop: updatedTab?.session?.scrollTop, + selection: updatedTab?.session?.selection, searchResultIndex: event.searchResultIndex }, tabId, diff --git a/packages/editor-mobile/src/hooks/useEditorController.ts b/packages/editor-mobile/src/hooks/useEditorController.ts index e5b9a2ceb..33c4fc474 100644 --- a/packages/editor-mobile/src/hooks/useEditorController.ts +++ b/packages/editor-mobile/src/hooks/useEditorController.ts @@ -139,6 +139,7 @@ export function useEditorController({ wordCounter: null, scroll: null }); + const hasRestored = useRef(false); if (!tabRef.current.session?.noteId && loading) { setTimeout(() => { @@ -300,6 +301,7 @@ export function useEditorController({ const scroll = useCallback( (_event: React.UIEvent) => { + if (!hasRestored.current) return; const value = _event.currentTarget.scrollTop; if (timers.current.scroll !== null) clearTimeout(timers.current.scroll); timers.current.scroll = setTimeout(() => { @@ -367,6 +369,7 @@ export function useEditorController({ } scrollTo?.(value.scrollTop || 0); + hasRestored.current = true; setLoading(false); countWords(0); } @@ -382,6 +385,7 @@ export function useEditorController({ logger("info", "LOADING NOTE HTML"); if (!editor) break; update(value.scrollTop, value.selection, value.searchResultIndex); + hasRestored.current = true; setTimeout(() => { countWords(0); }, 300);