export function useRemoveTodoMutation()

in todo/js/mutations/RemoveTodoMutation.js [20:68]


export function useRemoveTodoMutation(
  userRef: RemoveTodoMutation_user$key,
  todoRef: RemoveTodoMutation_todo$key,
  todoConnectionId: string,
): () => void {
  const user = useFragment(
    graphql`
      fragment RemoveTodoMutation_user on User {
        id
        userId
        totalCount
        completedCount
      }
    `,
    userRef,
  );
  const todo = useFragment(
    graphql`
      fragment RemoveTodoMutation_todo on Todo {
        id
        complete
      }
    `,
    todoRef,
  );
  const [commit] = useMutation(mutation);

  return useCallback(() => {
    commit({
      variables: {
        input: {
          id: todo.id,
          userId: user.userId,
        },
        connections: [todoConnectionId],
      },
      optimisticResponse: {
        removeTodo: {
          deletedTodoId: todo.id,
          user: {
            id: user.id,
            totalCount: user.totalCount - 1,
            completedCount: user.completedCount + (todo.complete ? -1 : 0),
          },
        },
      },
    });
  }, [commit, user, todo, todoConnectionId]);
}