fix: restore scroll position and in-focus highlighting correctly

- Set selectedTaskId when loading saved task
- Call handleScrollFocus initially to set in-focus class
- Skip saving during initialization unless task matches saved
This commit is contained in:
Yuyao Huang 2026-05-09 14:51:41 +08:00
parent ca7bd7e24e
commit 1df90490e6

View File

@ -57,6 +57,7 @@ async function loadTasks() {
if (savedTaskExists) { if (savedTaskExists) {
console.log("loadTasks: using savedTaskId path"); console.log("loadTasks: using savedTaskId path");
scrollToTask(savedTaskId); scrollToTask(savedTaskId);
selectedTaskId = savedTaskId;
if (isLandscapeMode()) { if (isLandscapeMode()) {
selectTask(savedTaskId); selectTask(savedTaskId);
} }
@ -177,6 +178,9 @@ function initScrollFocus() {
scrollView.removeEventListener("scroll", handleScrollFocus); scrollView.removeEventListener("scroll", handleScrollFocus);
scrollView.addEventListener("scroll", handleScrollFocus); scrollView.addEventListener("scroll", handleScrollFocus);
// Initial call to set in-focus class without saving
handleScrollFocus();
} }
function handleScrollFocus() { function handleScrollFocus() {
@ -207,8 +211,11 @@ function handleScrollFocus() {
const taskId = parseInt(closestItem.dataset.taskId); const taskId = parseInt(closestItem.dataset.taskId);
clearTimeout(persistTimer); // Only save during initialization if it matches the saved task
persistTimer = setTimeout(() => persistSelectedTask(taskId), 400); if (!isInitializing || taskId === selectedTaskId) {
clearTimeout(persistTimer);
persistTimer = setTimeout(() => persistSelectedTask(taskId), 400);
}
if (isLandscapeMode()) { if (isLandscapeMode()) {
if (taskId !== selectedTaskId) { if (taskId !== selectedTaskId) {