handleReport method
Future<R?>
handleReport({
- String? successMsg,
- String? emptyListMsg,
- bool isDisplayFailedMsg = false,
- FailureCallback? onFailed,
- SuccessCallback<
R> ? onSuccess, - VoidCallback? onEmpty,
This handles Either and returns the success result if available
Implementation
Future<R?> handleReport({
String? successMsg,
String? emptyListMsg,
bool isDisplayFailedMsg = false,
FailureCallback? onFailed,
SuccessCallback<R>? onSuccess,
VoidCallback? onEmpty,
}) async {
try {
return fold(
(L l) {
final String message = mapFailureToMessage(l as IFailure);
debugPrint('ResultEitherExtensions | handleReport | error: $message');
if (isDisplayFailedMsg) {
AppToast.showToast(msg: message);
}
onFailed?.call(message);
return null;
},
(R successReport) {
debugPrint(
'ResultEitherExtensions | handleReport | success: $successReport',
);
if (successReport is List && successReport.isEmpty) {
AppToast.showToast(msg: emptyListMsg ?? "No data available.");
onEmpty?.call();
return null;
}
if (successMsg != null) {
AppToast.showToast(msg: successMsg);
}
onSuccess?.call(successReport);
return successReport;
},
);
} catch (e, stackTrace) {
debugPrint('ResultEitherExtensions | handleReport | exception: $e');
debugPrint('$stackTrace');
return null;
}
}