Merge pull request #10222 from kashaf-ansari-dev/fix-9053-restore-editor-scroll-position

Fix 9053 restore editor scroll position
This commit is contained in:
Ammar Ahmed
2026-08-24 13:23:02 +05:00
committed by GitHub
2 changed files with 7 additions and 2 deletions

View File

@@ -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,

View File

@@ -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<HTMLDivElement, 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);