From b5c9b83fdde198dbff50438b6481a6da3f201aab Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Wed, 26 Jan 2022 11:53:24 +0300 Subject: [PATCH] api structure improvement. --- lib/api/api_client.dart | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/lib/api/api_client.dart b/lib/api/api_client.dart index 7de80da..dcd184e 100644 --- a/lib/api/api_client.dart +++ b/lib/api/api_client.dart @@ -10,8 +10,8 @@ import 'package:mohem_flutter_app/exceptions/api_exception.dart'; typedef FactoryConstructor = U Function(dynamic); class APIError { - int errorCode; - String errorMessage; + int? errorCode; + String? errorMessage; APIError(this.errorCode, this.errorMessage); @@ -74,18 +74,22 @@ class ApiClient { print("body:$jsonObject"); } var response = await postJsonForResponse(url, jsonObject, token: token, queryParameters: queryParameters, headers: _headers, retryTimes: retryTimes); - // try { + try { var jsonData = jsonDecode(response.body); - if (jsonData["ErrorMessage"] != null) { + if (jsonData["ErrorMessage"] == null) { return factoryConstructor(jsonData); } else { - throw _throwAPIException(response); + APIError? apiError; + apiError = APIError(jsonData['ErrorCode'], jsonData['ErrorMessage']); + throw APIException(APIException.BAD_REQUEST, error: apiError); } - // } catch (ex) { - // print(response.body); - // print(ex); - // throw APIException(APIException.BAD_RESPONSE_FORMAT, arguments: ex); - // } + } catch (ex) { + if (ex is APIException) { + rethrow; + } else { + throw APIException(APIException.BAD_RESPONSE_FORMAT, arguments: ex); + } + } } Future postJsonForResponse(String url, T jsonObject, {String? token, Map? queryParameters, Map? headers, int retryTimes = 0}) async {