useSimpleMutation<TData, TError> function

MutationResult<TData, TError, void> useSimpleMutation<TData, TError>(
  1. Future<TData> mutationFn(), {
  2. void onSuccess(
    1. TData
    )?,
  3. void onError(
    1. TError
    )?,
})

A hook to use a simple mutation without variables.

Implementation

MutationResult<TData, TError, void> useSimpleMutation<TData, TError>(
  Future<TData> Function() mutationFn, {
  void Function(TData)? onSuccess,
  void Function(TError)? onError,
}) {
  final controller = useMemoized(
    () => MutationController<TData, TError, void>(
      mutationFn: (_) => mutationFn(),
      onSuccess: onSuccess != null ? (data, _) => onSuccess(data) : null,
      onError: onError != null ? (error, _) => onError(error) : null,
    ),
  );

  final state = useValueListenable(controller);
  useEffect(() => controller.dispose, [controller]);

  return MutationResult(state, (_) => controller.mutate(null));
}