Skip to content

Add React Query Mutation Hooks #38

Description

@foxintheloop

Problem

App.tsx and TaskList.tsx have 4-7 scattered queryClient.invalidateQueries calls per action. Cache invalidation logic is duplicated and inconsistent, causing UI flicker (all queries invalidate → blank → refetch).

Solution

Extract into dedicated mutation hooks using React Query's useMutation:

// hooks/mutations/useCompleteTask.ts
export function useCompleteTask() {
  const queryClient = useQueryClient();
  return useMutation({
    mutationFn: (taskId: string) => window.electronAPI.tasks.toggleComplete(taskId),
    onMutate: async (taskId) => { /* optimistic update */ },
    onSettled: () => queryClient.invalidateQueries({ queryKey: ['tasks'] }),
  });
}

Create: useCompleteTask(), useDeleteTask(), useUpdateTask(), useCreateTask(), useMoveTask()

Files

  • apps/electron/src/renderer/hooks/mutations/ — new directory for mutation hooks
  • apps/electron/src/renderer/App.tsx — replace inline mutation logic
  • apps/electron/src/renderer/components/TaskList.tsx — replace inline mutation logic

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions