Untitled
unknown
plain_text
2 years ago
2.4 kB
8
Indexable
import 'package:cool_app/data/helpers/failure.dart';
import 'package:cool_app/data/locals/shared_pref.dart';
import 'package:cool_app/presentation/pages/auth/login_screen.dart';
import 'package:cool_app/presentation/utils/nav_utils.dart';
import 'package:dio/dio.dart';
class ErrorHandler implements Exception {
late Failure failure;
ErrorHandler.handle(dynamic error) {
if (error is DioException) {
failure = _handleDioError(error);
} else {
failure = Failure("Terjadi Kesalahan Tak Dikenal");
}
}
Failure _handleDioError(DioException error) {
if (error.response?.statusCode == 401) {
Prefs().clearSession();
Nav.toAll(const LoginScreen());
}
switch (error.type) {
case DioExceptionType.connectionTimeout:
return Failure(
"Koneksi terputus. Mohon periksa koneksi internet Anda.");
case DioExceptionType.sendTimeout:
return Failure("Waktu pengiriman permintaan habis.");
case DioExceptionType.receiveTimeout:
return Failure("Waktu penerimaan respons habis.");
case DioExceptionType.badResponse:
switch (error.response!.statusCode) {
case 401:
Prefs().clearSession();
Nav.toAll(const LoginScreen());
return Failure("Tidak Diizinkan. Silahkan login kembali.");
case 403:
return Failure(
"Akses ditolak. Anda tidak memiliki izin untuk melakukan tindakan ini.");
case 404:
return Failure("Tidak Ditemukan");
case 500:
return Failure(
"Terjadi Kesalahan Server Internal. Silakan coba lagi nanti.");
default:
return Failure("Terjadi Kesalahan Tak Dikenal");
}
case DioExceptionType.cancel:
return Failure("Permintaan dibatalkan. Silakan coba lagi.");
case DioExceptionType.unknown:
return Failure("Terjadi Kesalahan Tak Dikenal.");
case DioExceptionType.badCertificate:
return Failure(
"Terjadi Kesalahan Sertifikat SSL. Mohon periksa koneksi jaringan Anda.");
case DioExceptionType.connectionError:
return Failure(
"Terjadi Kesalahan Koneksi. Mohon periksa koneksi jaringan Anda.");
default:
return Failure("Terjadi Kesalahan yang Tidak Diperkirakan.");
}
}
}
Editor is loading...
Leave a Comment