execute method

Future<Either<ActionRequestError?, T?>?> execute()

Implementation

Future<Either<ActionRequestError?, T?>?> execute() async {
  Response? response;
  ActionRequestError? apiRequestError;
  Either<ActionRequestError?, T?>? either;
  log('${authRequired} -- ${await ApiRequestOptions.instance?.getTokenString()}');
  if (authRequired == false ||
      (await ApiRequestOptions.instance?.getTokenString()) != null) {
    try {
      response = await _execute();
      try {
        either = right(responseBuilder(response?.data));
        this.onSuccess(responseBuilder(response?.data));
      } catch (e) {
        apiRequestError = ActionRequestError(e, res: response);
        either = left(apiRequestError);
      }
    } catch (e) {
      apiRequestError = ActionRequestError(e);
      either = left(apiRequestError);
    }
    if (either.isLeft() && apiRequestError != null) {
      this.onError(apiRequestError);
      if (ApiRequestOptions.instance!.onError != null &&
          !disableGlobalOnError) {
        ApiRequestOptions.instance!.onError!(apiRequestError);
      }
    }
    this.onDone();
    return either;
  } else {
    log('You Need To Login to Request This action: ${this.runtimeType}');
  }
  return null;
}