execute<T> static method

Future<ApiResult<T>> execute<T>({
  1. required Future<T> apiCall(),
  2. bool isTokenExpired(
    1. T response
    )?,
})

Implementation

static Future<ApiResult<T>> execute<T>({
  required Future<T> Function() apiCall,
  bool Function(T response)? isTokenExpired,
}) async {
  try {
    final response = await apiCall();

    if (isTokenExpired?.call(response) ?? false) {
      return ApiFailure(sessionExpired);
    }

    return ApiSuccess(response);
  } catch (e, stackTrace) {
    if (e is BusinessException) {
      return ApiFailure(e.message);
    }

    return ApiFailure(unexpectedError, e, stackTrace);
  }
}