refactor: move notifications to popover and simplify task timeline

This commit is contained in:
2026-03-02 21:26:08 -05:00
parent d81a681905
commit 706c763dc4
5 changed files with 274 additions and 387 deletions

View File

@@ -70,14 +70,13 @@ type UseTaskNotificationsCenterResult = {
activeTasks: Task[];
finishedTasks: Task[];
unreadCount: number;
isLoading: boolean;
awaitingReviewTasks: Task[];
visibleFinishedTasks: Task[];
showReadFinished: boolean;
setShowReadFinished: (value: boolean) => void;
isPopoverOpen: boolean;
setIsPopoverOpen: (value: boolean) => void;
isDrawerOpen: boolean;
setIsDrawerOpen: (value: boolean) => void;
detailTaskId: string | null;
setDetailTaskId: (value: string | null) => void;
isDetailOpen: boolean;
@@ -94,7 +93,8 @@ export function useTaskNotificationsCenter(): UseTaskNotificationsCenterResult {
const [finishedTasks, setFinishedTasks] = useState<Task[]>([]);
const [showReadFinished, setShowReadFinished] = useState(false);
const [isPopoverOpen, setIsPopoverOpen] = useState(false);
const [isDrawerOpen, setIsDrawerOpen] = useState(false);
const [hasLoadedActive, setHasLoadedActive] = useState(false);
const [hasLoadedFinished, setHasLoadedFinished] = useState(false);
const [detailTaskId, setDetailTaskId] = useState<string | null>(null);
const [isDetailOpen, setIsDetailOpen] = useState(false);
@@ -149,7 +149,6 @@ export function useTaskNotificationsCenter(): UseTaskNotificationsCenterResult {
const openTaskDetails = useCallback((taskId: string) => {
setDetailTaskId(taskId);
setIsDetailOpen(true);
setIsDrawerOpen(true);
setIsPopoverOpen(false);
}, []);
@@ -276,6 +275,8 @@ export function useTaskNotificationsCenter(): UseTaskNotificationsCenterResult {
finishedSnapshotRef.current = finishedRes.tasks;
activeLoadedRef.current = true;
finishedLoadedRef.current = true;
setHasLoadedActive(true);
setHasLoadedFinished(true);
setActiveTasks(activeRes.tasks);
setFinishedTasks(finishedRes.tasks);
processSnapshots();
@@ -306,6 +307,7 @@ export function useTaskNotificationsCenter(): UseTaskNotificationsCenterResult {
activeSnapshotRef.current = response.tasks;
activeLoadedRef.current = true;
setHasLoadedActive(true);
setActiveTasks(response.tasks);
processSnapshots();
} catch {
@@ -332,6 +334,7 @@ export function useTaskNotificationsCenter(): UseTaskNotificationsCenterResult {
finishedSnapshotRef.current = response.tasks;
finishedLoadedRef.current = true;
setHasLoadedFinished(true);
setFinishedTasks(response.tasks);
processSnapshots();
} catch {
@@ -381,18 +384,19 @@ export function useTaskNotificationsCenter(): UseTaskNotificationsCenterResult {
return unreadTerminal + unreadActive;
}, [normalizedActiveTasks, normalizedFinishedTasks]);
const isLoading = !hasLoadedActive || !hasLoadedFinished;
return {
activeTasks: normalizedActiveTasks,
finishedTasks: normalizedFinishedTasks,
unreadCount,
isLoading,
awaitingReviewTasks,
visibleFinishedTasks,
showReadFinished,
setShowReadFinished,
isPopoverOpen,
setIsPopoverOpen,
isDrawerOpen,
setIsDrawerOpen,
detailTaskId,
setDetailTaskId,
isDetailOpen,