Refactor HTTPInterceptor and add CustomSnackBar helper

Refactor HTTPInterceptor to handle error responses and add a CustomSnackBar
helper to display snack bars. This will improve error handling and user
feedback in the application.
This commit is contained in:
Mohammad Salameh
2024-04-15 12:02:34 +03:00
parent 590c70a7d8
commit cfc395e210
10 changed files with 287 additions and 188 deletions

View File

@ -32,9 +32,7 @@ class ServerFailure extends Failure {
// var document = parser.parse(dioError.response!.data.toString());
// var message = document.body!.text;
return ServerFailure.fromResponse(dioError.response!.statusCode!,
dioError.response!.data['message'].toString()
// message
);
dioError.response!.data['message']);
}
case DioExceptionType.cancel:
return ServerFailure("The request to ApiServer was canceled");
@ -50,31 +48,27 @@ class ServerFailure extends Failure {
}
}
factory ServerFailure.fromResponse(int statusCode, dynamic response) {
if (statusCode == 401 || statusCode == 403) {
return ServerFailure(response);
} else if (statusCode == 400) {
//response is list of errors
List<String> errors = [];
response.forEach((element) {
errors.add(element);
});
return ServerFailure(errors.join('\n'));
} else if (statusCode == 404) {
return ServerFailure("Your request not found, Please try later!");
} else if (statusCode == 500) {
return ServerFailure(response);
} else {
return ServerFailure("Opps there was an Error, Please try again!");
factory ServerFailure.fromResponse(int? statusCode, dynamic response) {
switch (statusCode) {
case 401:
case 403:
return ServerFailure(response);
case 400:
List<String> errors = [];
if (response['message'] is List) {
for (var error in response['message']) {
errors.add(error);
}
} else {
errors.add(response['message']);
}
return ServerFailure(errors.join('\n'));
case 404:
return ServerFailure("Your request not found, Please try later!");
case 500:
return ServerFailure(response);
default:
return ServerFailure("Opps there was an Error, Please try again!");
}
}
}
class ResponseFailure extends Failure {
ResponseFailure(super.errMessage);
@override
String toString() {
return errMessage;
}
}