handleException<T extends Object> method

Future<BaseCallBack<AppException, BaseResponse>> handleException<T extends Object>(
  1. Future<Response> handler(), {
  2. String endpoint = '',
})

Implementation

Future<BaseCallBack<AppException, BaseResponse>> handleException<T extends Object>(
    Future<Response<dynamic>> Function() handler,
    {String endpoint = ''}) async {
  try {
    final res = await handler();
    return Success(
      BaseResponse(
        statusCode: res.statusCode ?? 200,
        data: res.data,
        statusMessage: res.statusMessage,
      ),
    );
  } catch (e) {
    String message = '';
    String identifier = '';
    int statusCode = 0;
    log(e.runtimeType.toString());
    switch (e.runtimeType) {
      case TimeoutException:
        e as TimeoutException;
        message = S.current.text_timeout_exception;
        statusCode = AppApi.timeoutErrorCode;
        identifier = 'Socket Exception ${e.message}\n at  $endpoint';
        break;

      case DioException:
        e as DioException;
        message = e.response?.data?['message'] ?? S.current.text_unknown_error;
        statusCode = AppApi.dioErrorCode;
        identifier = 'DioException ${e.message} \nat  $endpoint';
        break;

      default:
        message = S.current.text_unknown_error;
        statusCode = AppApi.unknownErrorCode;
        identifier = 'Unknown error ${e.toString()}\n at $endpoint';
    }
    return Error(
      AppException(
        message: message,
        statusCode: statusCode,
        identifier: identifier,
      ),
    );
  }
}