diff --git a/lib/bootstrap.dart b/lib/bootstrap.dart index 2607ddc8..39f34247 100644 --- a/lib/bootstrap.dart +++ b/lib/bootstrap.dart @@ -10,6 +10,7 @@ import 'package:hiddify/core/prefs/prefs.dart'; import 'package:hiddify/data/data_providers.dart'; import 'package:hiddify/data/repository/app_repository_impl.dart'; import 'package:hiddify/domain/environment.dart'; +import 'package:hiddify/domain/failures.dart'; import 'package:hiddify/features/common/active_profile/active_profile_notifier.dart'; import 'package:hiddify/features/common/window/window_controller.dart'; import 'package:hiddify/features/system_tray/system_tray.dart'; @@ -66,6 +67,12 @@ Future lazyBootstrap( options.tracesSampleRate = 0.25; options.enableUserInteractionTracing = true; options.addIntegration(sentryLogger); + options.beforeSend = (event, {hint}) { + return switch (event.throwable) { + ExpectedException _ => null, + _ => event, + }; + }; }, appRunner: () => _lazyBootstrap(widgetsBinding, container, env), ); diff --git a/lib/domain/core_service_failure.dart b/lib/domain/core_service_failure.dart index 88a7b000..f288ac98 100644 --- a/lib/domain/core_service_failure.dart +++ b/lib/domain/core_service_failure.dart @@ -13,6 +13,7 @@ sealed class CoreServiceFailure with _$CoreServiceFailure, Failure { StackTrace stackTrace, ) = UnexpectedCoreServiceFailure; + @With() const factory CoreServiceFailure.serviceNotRunning([String? message]) = CoreServiceNotRunning; diff --git a/lib/domain/failures.dart b/lib/domain/failures.dart index 433fcc78..4a2973d4 100644 --- a/lib/domain/failures.dart +++ b/lib/domain/failures.dart @@ -5,6 +5,9 @@ mixin Failure { ({String type, String? message}) present(TranslationsEn t); } +/// failures ignored by analytics service etc. +mixin ExpectedException {} + extension ErrorPresenter on TranslationsEn { String? _errorToMessage(Object error) { switch (error) {