when<R> method

R when<R>({
  1. required R idle(),
  2. required R loading(),
  3. required R success(
    1. T data
    ),
  4. required R failed(
    1. FailureResponse<E> error
    ),
  5. required R networkError(
    1. FailureResponse<E> error
    ),
})

Pattern matching for all states

Implementation

R when<R>({
  required R Function() idle,
  required R Function() loading,
  required R Function(T data) success,
  required R Function(FailureResponse<E> error) failed,
  required R Function(FailureResponse<E> error) networkError,
}) {
  return switch (this) {
    IdleState<T, E>() => idle(),
    LoadingState<T, E>() => loading(),
    SuccessState<T, E>(data: final d) => success(d),
    FailedState<T, E>(error: final e) => failed(e),
    NetworkErrorState<T, E>(error: final e) => networkError(e),
  };
}