You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
uco-mobile-poc/lib/app/core/config/dio_exceptions.dart

94 lines
2.3 KiB
Dart

import 'package:dio/dio.dart';
import 'package:uco_mobile_poc/app/core/config/server_response.dart';
import '../utils/logs_utils.dart';
import 'api_utils.dart';
class DioExceptions {
static String errorMsg = "";
static int statusCode = -1;
static ServerResponse responseModel =
ServerResponse({}, true, "", errorMsg, statusCode);
static ServerResponse parseError(DioError dioError) {
//
dp("============================================", dioError);
pe("Error response", dioError.response);
statusCode = dioError.response?.statusCode ?? -1;
responseModel.setStatusCode(statusCode);
switch (dioError.type) {
case DioErrorType.cancel:
errorMsg = "Request to API server was cancelled";
break;
case DioErrorType.connectTimeout:
errorMsg = "Connection timeout with API server";
break;
case DioErrorType.receiveTimeout:
errorMsg = "Receive timeout in connection with API server";
break;
case DioErrorType.response:
_handleError(dioError.response);
break;
case DioErrorType.sendTimeout:
errorMsg = "Send timeout in connection with API server";
break;
case DioErrorType.other:
if (dioError.message.contains("SocketException")) {
errorMsg = 'No Internet';
break;
}
errorMsg = "Unexpected error occurred";
break;
default:
errorMsg = "Something went wrong";
break;
}
return responseModel;
}
static void _handleError(dynamic error) {
switch (statusCode) {
case 400:
{
ApiUtils.parseError(responseModel, error);
}
break;
case 401:
{
responseModel.setErrorMsg("Unauthorized");
}
break;
case 403:
{
responseModel.setErrorMsg("Forbidden");
}
break;
case 404:
{
responseModel.setResponse(error['message']);
}
break;
case 500:
{
responseModel.setErrorMsg("Something went wrong, please try again");
}
break;
case 502:
{
responseModel.setErrorMsg("Bad gateway");
}
break;
default:
{
responseModel
.setErrorMsg("Oops something went wrong, please try again");
}
}
}
}