mirror of
https://github.com/Xevion/paperless-mobile.git
synced 2025-12-06 15:15:50 -06:00
42 lines
1.3 KiB
Dart
42 lines
1.3 KiB
Dart
import 'package:flutter_bloc/flutter_bloc.dart';
|
|
import 'package:paperless_mobile/core/bloc/transient_error.dart';
|
|
import 'package:paperless_mobile/core/translation/error_code_localization_mapper.dart';
|
|
import 'package:paperless_mobile/features/logging/data/logger.dart';
|
|
import 'package:paperless_mobile/helpers/message_helpers.dart';
|
|
import 'package:paperless_mobile/routing/navigation_keys.dart';
|
|
|
|
class MyBlocObserver extends BlocObserver {
|
|
@override
|
|
void onError(BlocBase bloc, Object error, StackTrace stackTrace) {
|
|
if (error is TransientError) {
|
|
_handleTransientError(bloc, error, stackTrace);
|
|
}
|
|
super.onError(bloc, error, stackTrace);
|
|
}
|
|
|
|
void _handleTransientError(
|
|
BlocBase bloc,
|
|
TransientError error,
|
|
StackTrace stackTrace,
|
|
) {
|
|
assert(rootNavigatorKey.currentContext != null);
|
|
final message = switch (error) {
|
|
TransientPaperlessApiError(code: var code) => translateError(
|
|
rootNavigatorKey.currentContext!,
|
|
code,
|
|
),
|
|
TransientMessageError(message: var message) => message,
|
|
};
|
|
final details = switch (error) {
|
|
TransientPaperlessApiError(details: var details) => details,
|
|
_ => null,
|
|
};
|
|
|
|
showSnackBar(
|
|
rootNavigatorKey.currentContext!,
|
|
message,
|
|
details: details,
|
|
);
|
|
}
|
|
}
|