processUsecaseResult<T> method

void processUsecaseResult<T>({
  1. required Either<APIErrors, T> result,
  2. dynamic onSuccess(
    1. T
    )?,
  3. dynamic onFail(
    1. APIErrors
    )?,
  4. bool? shouldShowError,
  5. bool? isRefreshing,
})

Implementation

void processUsecaseResult<T>({
  required Either<APIErrors, T> result,
  Function(T)? onSuccess,
  Function(APIErrors)? onFail,
  bool? shouldShowError,
  bool? isRefreshing,
  // RefreshController? controller,
}) {
  result.fold(
    (error) {
      isLoading(false);
      receiveErrorStream.sink.add(error);
      if (shouldShowError ?? true && error is! NoMessageError) {
        if (error is NoInternetError) {
          // Utils.instance.showError(
          //   error: error,
          //   message: 'No internet',
          // );
          status.value = BaseStatus(
            message: 'No internet',
            state: AppState.failed,
          );
        } else {
          if (error.details.toString().toLowerCase().contains('connection') ||
              error.details.toString().toLowerCase().contains(
                'can\'t assign requested address',
              )) {
            status.value = BaseStatus(
              message: 'Connection aborted',
              state: AppState.failed,
            );
          } else {
            status.value = BaseStatus(
              message: error.details.toString(),
              state: AppState.failed,
            );
          }
        }
      }
      if (onFail != null) {
        onFail(error);
      }
      // if ((controller ?? refreshController) != null && isRefreshing != null) {
      //   isRefreshing
      //       ? (controller ?? refreshController)!.refreshFailed()
      //       : (controller ?? refreshController)!.loadFailed();
      // }
    },
    (data) {
      isLoading(false);
      if (onSuccess != null) {
        onSuccess(data);
      }
      // if ((controller ?? refreshController) != null && isRefreshing != null) {
      //   if (isRefreshing) {
      //     (controller ?? refreshController)!
      //         .refreshCompleted(resetFooterState: true);
      //   } else {
      //     if (data is List && data.isEmpty) {
      //       (controller ?? refreshController)!.loadNoData();
      //     } else {
      //       (controller ?? refreshController)!.loadComplete();
      //     }
      //   }
      // }
    },
  );
}