export function useChangeTodoStatusMutation()

in todo/js/mutations/ChangeTodoStatusMutation.js [23:73]


export function useChangeTodoStatusMutation(
  userRef: ChangeTodoStatusMutation_user$key,
  todoRef: ChangeTodoStatusMutation_todo$key,
): (boolean) => void {
  const user = useFragment(
    graphql`
      fragment ChangeTodoStatusMutation_user on User {
        id
        userId
        completedCount
      }
    `,
    userRef,
  );
  const todo = useFragment(
    graphql`
      fragment ChangeTodoStatusMutation_todo on Todo {
        id
      }
    `,
    todoRef,
  );
  const [commit] = useMutation(mutation);

  return useCallback(
    (complete: boolean) => {
      const payload = {
        id: todo.id,
        complete,
      };
      commit({
        variables: {
          input: {
            userId: user.userId,
            ...payload,
          },
        },
        optimisticResponse: {
          changeTodoStatus: {
            todo: payload,
            user: {
              id: user.id,
              completedCount: user.completedCount + (complete ? 1 : -1),
            },
          },
        },
      });
    },
    [user, todo, commit],
  );
}