Skip to content

Commit a7cd0c5

Browse files
authored
Merge pull request #23 from NeoSOFT-Technologies/error-module-config
Updating Error Module configs to support fallback values
2 parents f428034 + b7d6b03 commit a7cd0c5

File tree

6 files changed

+84
-32
lines changed

6 files changed

+84
-32
lines changed

app/lib/di/app_dependency_configurator.config.dart

Lines changed: 26 additions & 16 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 45 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
1+
import 'package:app/errors/flutter_alert_error_presenter.dart';
12
import 'package:app/errors/flutter_snack_bar_error_presenter.dart';
3+
import 'package:app/model/alert_texts.dart';
24
import 'package:data/data.dart';
5+
import 'package:flutter/cupertino.dart';
36
import 'package:flutter_errors/flutter_errors.dart';
47
import 'package:injectable/injectable.dart';
58

@@ -17,24 +20,54 @@ abstract class ErrorsModule {
1720
return FlutterSnackBarErrorPresenter();
1821
}
1922

23+
@singleton
24+
FlutterAlertErrorPresenter providesFlutterAlertErrorPresenter() {
25+
return FlutterAlertErrorPresenter();
26+
}
27+
28+
@singleton
29+
SelectorErrorPresenter providesSelectorErrorPresenter(
30+
FlutterToastErrorPresenter toastErrorPresenter,
31+
FlutterSnackBarErrorPresenter snackBarErrorPresenter,
32+
FlutterAlertErrorPresenter alertErrorPresenter) {
33+
return SelectorErrorPresenter((e) {
34+
switch (e.runtimeType) {
35+
case FormatException:
36+
return toastErrorPresenter;
37+
38+
case NetworkError:
39+
return alertErrorPresenter;
40+
41+
default:
42+
return snackBarErrorPresenter;
43+
}
44+
});
45+
}
46+
2047
@lazySingleton
21-
ExceptionMappers providersGlobalErrors() {
22-
return ExceptionMappers()
23-
/*.condition<String>((e) => e is NetworkError && e.error.code == 1,
24-
(e) => "My custom error from mapper")*/
48+
ExceptionMapperStorage providersGlobalErrors() {
49+
return ExceptionMapperStorage.instance
2550
.register<NetworkError, String>((e) => "NetworkError registered error")
2651
.register<FormatException, String>(
27-
(e) => "Format Exception registered error");
52+
(e) => "Format Exception registered error")
53+
.condition<AlertTexts>(
54+
(e) => (e is NetworkError) && e.error.code == 1,
55+
(e) => AlertTexts(
56+
title: 'NetworkError code error 1', message: 'error 1 message'))
57+
.setFallBackValue(AlertTexts(
58+
title: 'Alert default title', message: 'Alert Default Message'));
2859
}
2960

3061
@singleton
3162
FlutterExceptionHandlerBinder providerDefaultExceptionHandler(
32-
FlutterToastErrorPresenter errorPresenter,
33-
ExceptionMappers exceptionMappersStorage) {
34-
return FlutterExceptionHandlerBinderImpl<String>(
35-
exceptionMappersStorage.throwableMapper(),
36-
errorPresenter,
37-
FlutterEventsDispatcher(),
38-
(Exception e) {});
63+
SelectorErrorPresenter errorPresenter,
64+
ExceptionMapperStorage exceptionMappersStorage) {
65+
return FlutterExceptionHandlerBinderImpl(
66+
exceptionMapperStorage: exceptionMappersStorage.throwableMapper(),
67+
flutterErrorPresenter: errorPresenter,
68+
flutterEventsDispatcher: FlutterEventsDispatcher(),
69+
onCatch: (Exception e) {
70+
debugPrint("Exception found $e");
71+
});
3972
}
4073
}
Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
import 'package:flutter/material.dart';
22
import 'package:flutter_errors/flutter_errors.dart';
33

4-
class FlutterAlertErrorPresenter extends AlertErrorPresenter<String> {
4+
import '../model/alert_texts.dart';
5+
6+
class FlutterAlertErrorPresenter<T extends AlertTexts>
7+
extends AlertErrorPresenter<T> {
58
FlutterAlertErrorPresenter(
69
{super.alertTitle = "", super.positiveButtonText = ""});
710

811
@override
9-
void show(Exception throwable, BuildContext context, String data) {
12+
void show(Exception throwable, BuildContext context, AlertTexts data) {
1013
// your alert provider
1114
}
1215
}

app/lib/errors/flutter_snack_bar_error_presenter.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import 'package:flutter/material.dart';
22
import 'package:flutter_errors/flutter_errors.dart';
33

4-
class FlutterSnackBarErrorPresenter extends SnackBarErrorPresenter<String> {
4+
class FlutterSnackBarErrorPresenter<T extends String> extends SnackBarErrorPresenter<T> {
55
FlutterSnackBarErrorPresenter({super.duration});
66

77
@override

app/lib/errors/flutter_toast_error_presenter.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import 'package:flutter/material.dart';
22
import 'package:flutter_errors/flutter_errors.dart';
33
import 'package:fluttertoast/fluttertoast.dart';
44

5-
class FlutterToastErrorPresenter extends ToastErrorPresenter<String> {
5+
class FlutterToastErrorPresenter<T extends String> extends ToastErrorPresenter<T> {
66
@override
77
void show(Exception throwable, BuildContext context, String data) {
88
Fluttertoast.showToast(

app/lib/model/alert_texts.dart

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
class AlertTexts {
2+
final String title;
3+
final String message;
4+
5+
AlertTexts({required this.title, required this.message});
6+
}

0 commit comments

Comments
 (0)