From d2504c4967133a9e6f0e338b4fb9a64a417aa9e8 Mon Sep 17 00:00:00 2001 From: ANIR1604 Date: Mon, 19 Jan 2026 01:05:59 +0530 Subject: [PATCH] fix: prevent Task Dialog blink when pinning/unpinning tasks Use UUID comparison instead of object reference to detect task changes, preventing unnecessary edit state resets on re-renders. --- .../HomeComponents/Tasks/UseEditTask.tsx | 30 +++++++++++-------- 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/frontend/src/components/HomeComponents/Tasks/UseEditTask.tsx b/frontend/src/components/HomeComponents/Tasks/UseEditTask.tsx index 023ced3d..7440bed2 100644 --- a/frontend/src/components/HomeComponents/Tasks/UseEditTask.tsx +++ b/frontend/src/components/HomeComponents/Tasks/UseEditTask.tsx @@ -1,4 +1,4 @@ -import { useState, useEffect } from 'react'; +import { useState, useEffect, useRef } from 'react'; import { EditTaskState, Task } from '../../utils/types'; export const useEditTask = (selectedTask: Task | null) => { @@ -34,23 +34,29 @@ export const useEditTask = (selectedTask: Task | null) => { annotationInput: '', }); + const previousTaskUuidRef = useRef(null); + useEffect(() => { if (selectedTask) { - setState((prev) => ({ - ...prev, - editedTags: selectedTask.tags || [], - editedDescription: selectedTask.description || '', - editedPriority: selectedTask.priority || 'NONE', - editedProject: selectedTask.project || '', - editedRecur: selectedTask.recur || '', - originalRecur: selectedTask.recur || '', - editedAnnotations: selectedTask.annotations || [], - editedDepends: selectedTask.depends || [], - })); + if (previousTaskUuidRef.current !== selectedTask.uuid) { + previousTaskUuidRef.current = selectedTask.uuid; + setState((prev) => ({ + ...prev, + editedTags: selectedTask.tags || [], + editedDescription: selectedTask.description || '', + editedPriority: selectedTask.priority || 'NONE', + editedProject: selectedTask.project || '', + editedRecur: selectedTask.recur || '', + originalRecur: selectedTask.recur || '', + editedAnnotations: selectedTask.annotations || [], + editedDepends: selectedTask.depends || [], + })); + } } }, [selectedTask]); const resetState = () => { + previousTaskUuidRef.current = null; setState({ isEditing: false, editedDescription: '',