From fd9b7cbb0a7d338db091529ddf28482a8eb73cff Mon Sep 17 00:00:00 2001 From: dab246 Date: Tue, 21 Jun 2022 16:10:56 +0700 Subject: [PATCH] TF-196 Create RemoteExceptionThrower to catch error from network --- core/lib/core.dart | 2 ++ .../data/network/remote_exception_thrower.dart | 13 +++++++++++++ core/lib/domain/exceptions/remote_exception.dart | 16 ++++++++++++++++ 3 files changed, 31 insertions(+) create mode 100644 core/lib/data/network/remote_exception_thrower.dart create mode 100644 core/lib/domain/exceptions/remote_exception.dart diff --git a/core/lib/core.dart b/core/lib/core.dart index 1fd573682..b0d5f4e6f 100644 --- a/core/lib/core.dart +++ b/core/lib/core.dart @@ -14,6 +14,8 @@ export 'domain/extensions/media_type_extension.dart'; // Exceptions export 'domain/exceptions/download_file_exception.dart'; export 'data/extensions/options_extensions.dart'; +export 'domain/exceptions/remote_exception.dart'; +export 'data/network/remote_exception_thrower.dart'; // Utils export 'presentation/utils/theme_utils.dart'; diff --git a/core/lib/data/network/remote_exception_thrower.dart b/core/lib/data/network/remote_exception_thrower.dart new file mode 100644 index 000000000..9b9e8f9e0 --- /dev/null +++ b/core/lib/data/network/remote_exception_thrower.dart @@ -0,0 +1,13 @@ + +import 'package:core/domain/exceptions/remote_exception.dart'; +import 'package:dio/dio.dart'; + +class RemoteExceptionThrower { + void throwRemoteException(dynamic exception, {Function(DioError)? handler}) { + if (exception is DioError) { + handler != null ? handler(exception) : throw UnknownError(exception.message); + } else { + throw UnknownError(exception.toString()); + } + } +} diff --git a/core/lib/domain/exceptions/remote_exception.dart b/core/lib/domain/exceptions/remote_exception.dart new file mode 100644 index 000000000..3d3b0f7d9 --- /dev/null +++ b/core/lib/domain/exceptions/remote_exception.dart @@ -0,0 +1,16 @@ + +import 'package:equatable/equatable.dart'; + +abstract class RemoteException extends Equatable implements Exception { + + final String? message; + + RemoteException(this.message); +} + +class UnknownError extends RemoteException { + UnknownError(String? message) : super(message); + + @override + List get props => []; +} \ No newline at end of file