TF-4268 Initialize Sentry from Linagora Ecosystem configuration
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/linagora_ecosystem/linagora_ecosystem.dart';
|
||||
|
||||
abstract class LinagoraEcosystemDatasource {
|
||||
Future<LinagoraEcosystem> getLinagoraEcosystem(String baseUrl);
|
||||
}
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/data/datasource/linagora_ecosystem_datasource.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/data/network/linagora_ecosystem_api.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/linagora_ecosystem/linagora_ecosystem.dart';
|
||||
import 'package:tmail_ui_user/main/exceptions/thrower/exception_thrower.dart';
|
||||
|
||||
class LinagoraEcosystemDatasourceImpl extends LinagoraEcosystemDatasource {
|
||||
final LinagoraEcosystemApi _linagoraEcosystemApi;
|
||||
final ExceptionThrower _exceptionThrower;
|
||||
|
||||
LinagoraEcosystemDatasourceImpl(
|
||||
this._linagoraEcosystemApi,
|
||||
this._exceptionThrower,
|
||||
);
|
||||
|
||||
@override
|
||||
Future<LinagoraEcosystem> getLinagoraEcosystem(String baseUrl) {
|
||||
return Future.sync(() async {
|
||||
return await _linagoraEcosystemApi.getLinagoraEcosystem(baseUrl);
|
||||
}).catchError(_exceptionThrower.throwException);
|
||||
}
|
||||
}
|
||||
+4
-5
@@ -1,15 +1,14 @@
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/data/network/linagora_ecosystem_api.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/data/datasource/linagora_ecosystem_datasource.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/linagora_ecosystem/linagora_ecosystem.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/repository/linagora_ecosystem_repository.dart';
|
||||
|
||||
class LinagoraEcosystemRepositoryImpl extends LinagoraEcosystemRepository {
|
||||
final LinagoraEcosystemApi _linagoraEcosystemApi;
|
||||
final LinagoraEcosystemDatasource _ecosystemDatasource;
|
||||
|
||||
LinagoraEcosystemRepositoryImpl(this._linagoraEcosystemApi);
|
||||
LinagoraEcosystemRepositoryImpl(this._ecosystemDatasource);
|
||||
|
||||
@override
|
||||
Future<LinagoraEcosystem> getLinagoraEcosystem(String baseUrl) {
|
||||
return _linagoraEcosystemApi.getLinagoraEcosystem(baseUrl);
|
||||
return _ecosystemDatasource.getLinagoraEcosystem(baseUrl);
|
||||
}
|
||||
|
||||
}
|
||||
+2
@@ -8,6 +8,7 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/domain/linagora_ecosyst
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/linagora_ecosystem/linagora_ecosystem.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/linagora_ecosystem/linagora_ecosystem_identifier.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/linagora_ecosystem/linagora_ecosystem_properties.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/linagora_ecosystem/sentry_config_linagora_ecosystem.dart';
|
||||
|
||||
class LinagoraEcosystemConverter {
|
||||
static final defaultConverter = LinagoraEcosystemConverter();
|
||||
@@ -29,6 +30,7 @@ class LinagoraEcosystemConverter {
|
||||
LinagoraEcosystemIdentifier.mobileApps: MobileAppsLinagoraEcosystemConverter.deserialize,
|
||||
LinagoraEcosystemIdentifier.paywallURL: ApiUrlLinagoraEcosystem.deserialize,
|
||||
LinagoraEcosystemIdentifier.scribePromptUrl: ApiUrlLinagoraEcosystem.deserialize,
|
||||
LinagoraEcosystemIdentifier.sentryConfig: SentryConfigLinagoraEcosystem.deserialize,
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/domain/linagora_ecosyst
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/linagora_ecosystem/linagora_ecosystem_identifier.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/linagora_ecosystem/linagora_ecosystem_properties.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/linagora_ecosystem/mobile_apps_linagora_ecosystem.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/linagora_ecosystem/sentry_config_linagora_ecosystem.dart';
|
||||
|
||||
class LinagoraEcosystem with EquatableMixin {
|
||||
final Map<LinagoraEcosystemIdentifier, LinagoraEcosystemProperties?>? properties;
|
||||
@@ -48,4 +49,8 @@ extension LinagoraEcosystemExtension on LinagoraEcosystem {
|
||||
|
||||
String? get scribePromptUrl =>
|
||||
(properties?[LinagoraEcosystemIdentifier.scribePromptUrl] as ApiUrlLinagoraEcosystem?)?.value;
|
||||
|
||||
SentryConfigLinagoraEcosystem? get sentryConfigEcosystem =>
|
||||
(properties?[LinagoraEcosystemIdentifier.sentryConfig]
|
||||
as SentryConfigLinagoraEcosystem?);
|
||||
}
|
||||
+1
@@ -13,6 +13,7 @@ class LinagoraEcosystemIdentifier with EquatableMixin {
|
||||
static final linShare = LinagoraEcosystemIdentifier('LinShare');
|
||||
static final paywallURL = LinagoraEcosystemIdentifier('paywallUrlTemplate');
|
||||
static final scribePromptUrl = LinagoraEcosystemIdentifier('scribePromptUrl');
|
||||
static final sentryConfig = LinagoraEcosystemIdentifier('sentry');
|
||||
|
||||
final String value;
|
||||
|
||||
|
||||
+53
@@ -0,0 +1,53 @@
|
||||
import 'package:core/utils/application_manager.dart';
|
||||
import 'package:core/utils/sentry/sentry_config.dart';
|
||||
import 'package:json_annotation/json_annotation.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/linagora_ecosystem/empty_linagora_ecosystem.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/linagora_ecosystem/linagora_ecosystem_properties.dart';
|
||||
|
||||
part 'sentry_config_linagora_ecosystem.g.dart';
|
||||
|
||||
@JsonSerializable(explicitToJson: true, includeIfNull: false)
|
||||
class SentryConfigLinagoraEcosystem extends LinagoraEcosystemProperties {
|
||||
@JsonKey(fromJson: _parseBool)
|
||||
final bool? enabled;
|
||||
final String? dsn;
|
||||
final String? environment;
|
||||
|
||||
SentryConfigLinagoraEcosystem({this.enabled, this.dsn, this.environment});
|
||||
|
||||
factory SentryConfigLinagoraEcosystem.fromJson(Map<String, dynamic> json) =>
|
||||
_$SentryConfigLinagoraEcosystemFromJson(json);
|
||||
|
||||
static bool? _parseBool(dynamic value) {
|
||||
if (value == null) return null;
|
||||
if (value is bool) return value;
|
||||
if (value is String) return value.toLowerCase() == 'true';
|
||||
return null;
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() => _$SentryConfigLinagoraEcosystemToJson(this);
|
||||
|
||||
static LinagoraEcosystemProperties? deserialize(dynamic json) {
|
||||
if (json is Map<String, dynamic>) {
|
||||
return SentryConfigLinagoraEcosystem.fromJson(json);
|
||||
} else {
|
||||
return EmptyLinagoraEcosystem();
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
List<Object?> get props => [enabled, dsn, environment];
|
||||
}
|
||||
|
||||
extension SentryConfigLinagoraEcosystemExtension on SentryConfigLinagoraEcosystem {
|
||||
Future<SentryConfig> toSentryConfig() async {
|
||||
final appVersion = await ApplicationManager().getAppVersion();
|
||||
|
||||
return SentryConfig(
|
||||
dsn: dsn ?? '',
|
||||
environment: environment ?? '',
|
||||
release: appVersion,
|
||||
isAvailable: enabled ?? false,
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -2,6 +2,8 @@ import 'package:core/presentation/state/success.dart';
|
||||
import 'package:core/presentation/state/failure.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/linagora_ecosystem/linagora_ecosystem.dart';
|
||||
|
||||
class GettingLinagoraEcosystem extends LoadingState {}
|
||||
|
||||
class GetLinagoraEcosystemSuccess extends Success {
|
||||
final LinagoraEcosystem linagoraEcosystem;
|
||||
|
||||
|
||||
@@ -10,6 +10,7 @@ class GetLinagoraEcosystemInteractor {
|
||||
|
||||
Stream<Either<Failure, Success>> execute(String baseUrl) async* {
|
||||
try {
|
||||
yield Right(GettingLinagoraEcosystem());
|
||||
final linagoraEcosystem = await _linagoraEcosystemRepository.getLinagoraEcosystem(baseUrl);
|
||||
|
||||
yield Right(GetLinagoraEcosystemSuccess(linagoraEcosystem));
|
||||
|
||||
+53
@@ -0,0 +1,53 @@
|
||||
import 'package:get/get.dart';
|
||||
import 'package:tmail_ui_user/features/base/interactors_bindings.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/data/datasource/linagora_ecosystem_datasource.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/data/datasource_impl/linagora_ecosystem_datasource_impl.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/data/network/linagora_ecosystem_api.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/data/repository/linagora_ecosystem_repository_impl.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/repository/linagora_ecosystem_repository.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_linagora_system_interactor.dart';
|
||||
import 'package:tmail_ui_user/main/exceptions/thrower/remote_exception_thrower.dart';
|
||||
|
||||
class LinagoraEcosystemInteractorBindings extends InteractorsBindings {
|
||||
@override
|
||||
void bindingsDataSource() {
|
||||
Get.lazyPut<LinagoraEcosystemDatasource>(
|
||||
() => Get.find<LinagoraEcosystemDatasourceImpl>(),
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
void bindingsDataSourceImpl() {
|
||||
Get.lazyPut(
|
||||
() => LinagoraEcosystemDatasourceImpl(
|
||||
Get.find<LinagoraEcosystemApi>(),
|
||||
Get.find<RemoteExceptionThrower>(),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
void bindingsInteractor() {
|
||||
Get.lazyPut(
|
||||
() => GetLinagoraEcosystemInteractor(
|
||||
Get.find<LinagoraEcosystemRepository>(),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
void bindingsRepository() {
|
||||
Get.lazyPut<LinagoraEcosystemRepository>(
|
||||
() => Get.find<LinagoraEcosystemRepositoryImpl>(),
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
void bindingsRepositoryImpl() {
|
||||
Get.lazyPut(
|
||||
() => LinagoraEcosystemRepositoryImpl(
|
||||
Get.find<LinagoraEcosystemDatasource>(),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
+2
-6
@@ -86,19 +86,16 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/data/local/local_sort_o
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/data/network/linagora_ecosystem_api.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/data/repository/app_grid_repository_impl.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/data/repository/composer_cache_repository_impl.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/data/repository/linagora_ecosystem_repository_impl.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/data/repository/search_repository_impl.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/data/repository/spam_report_repository_impl.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/repository/app_grid_repository.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/repository/composer_cache_repository.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/repository/linagora_ecosystem_repository.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/repository/search_repository.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/repository/spam_report_repository.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_all_recent_search_latest_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_app_dashboard_configuration_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_app_grid_linagra_ecosystem_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_composer_cache_on_web_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_linagora_system_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_spam_mailbox_cached_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_spam_report_state_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_stored_email_sort_order_interactor.dart';
|
||||
@@ -113,6 +110,7 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/store_e
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/store_last_time_dismissed_spam_reported_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/store_spam_report_state_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/bindings/email_action_interactor_bindings.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/bindings/linagora_ecosystem_interactor_bindings.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/advanced_filter_controller.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/app_grid_dashboard_controller.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart';
|
||||
@@ -385,7 +383,6 @@ class MailboxDashBoardBindings extends BaseBindings {
|
||||
Get.lazyPut(() => EmptySpamFolderInteractor(Get.find<ThreadRepository>()));
|
||||
Get.lazyPut(() => GetAppDashboardConfigurationInteractor(Get.find<AppGridRepository>()));
|
||||
Get.lazyPut(() => GetAppGridLinagraEcosystemInteractor(Get.find<AppGridRepository>()));
|
||||
Get.lazyPut(() => GetLinagoraEcosystemInteractor(Get.find<LinagoraEcosystemRepository>()));
|
||||
Get.lazyPut(() => GetEmailByIdInteractor(
|
||||
Get.find<ThreadRepository>(),
|
||||
Get.find<EmailRepository>()));
|
||||
@@ -435,6 +432,7 @@ class MailboxDashBoardBindings extends BaseBindings {
|
||||
);
|
||||
|
||||
EmailActionInteractorBindings(Get.find<EmailRepository>()).dependencies();
|
||||
LinagoraEcosystemInteractorBindings().dependencies();
|
||||
}
|
||||
|
||||
@override
|
||||
@@ -450,7 +448,6 @@ class MailboxDashBoardBindings extends BaseBindings {
|
||||
Get.lazyPut<ServerSettingsRepository>(() => Get.find<ServerSettingsRepositoryImpl>());
|
||||
Get.lazyPut<IdentityCreatorRepository>(() => Get.find<IdentityCreatorRepositoryImpl>());
|
||||
Get.lazyPut<AppGridRepository>(() => Get.find<AppGridRepositoryImpl>());
|
||||
Get.lazyPut<LinagoraEcosystemRepository>(() => Get.find<LinagoraEcosystemRepositoryImpl>());
|
||||
}
|
||||
|
||||
@override
|
||||
@@ -503,6 +500,5 @@ class MailboxDashBoardBindings extends BaseBindings {
|
||||
DataSourceType.network: Get.find<AppGridDatasource>(),
|
||||
DataSourceType.local: Get.find<LocalAppGridDatasourceImpl>()
|
||||
},));
|
||||
Get.lazyPut(() => LinagoraEcosystemRepositoryImpl(Get.find<LinagoraEcosystemApi>()));
|
||||
}
|
||||
}
|
||||
+22
-12
@@ -109,6 +109,7 @@ import 'package:tmail_ui_user/features/mailbox/presentation/action/mailbox_ui_ac
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/extensions/presentation_mailbox_extension.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_actions.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/exceptions/spam_report_exception.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/linagora_ecosystem/linagora_ecosystem.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/model/spam_report_state.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/get_composer_cache_state.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/get_linagora_ecosystem_state.dart';
|
||||
@@ -153,6 +154,7 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/update_current_emails_flags_extension.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/update_text_formatting_menu_state_extension.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/web_auth_redirect_processor_extension.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/mixin/sentry_ecosystem_mixin.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/dashboard_routes.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/download/download_task_state.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/draggable_app_state.dart';
|
||||
@@ -162,7 +164,6 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/sear
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/quick_search_filter.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/search_email_filter.dart';
|
||||
import 'package:tmail_ui_user/features/mailto/presentation/model/mailto_arguments.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/linagora_ecosystem/linagora_ecosystem.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/domain/model/preferences/ai_scribe_config.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/domain/state/create_new_rule_filter_state.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/domain/state/get_ai_scribe_config_state.dart';
|
||||
@@ -241,7 +242,8 @@ class MailboxDashBoardController extends ReloadableController
|
||||
AiScribeMixin,
|
||||
SearchLabelFilterModalMixin,
|
||||
AddLabelToEmailMixin,
|
||||
HandleTeamMailboxMixin {
|
||||
HandleTeamMailboxMixin,
|
||||
SentryEcosystemMixin {
|
||||
|
||||
final RemoveEmailDraftsInteractor _removeEmailDraftsInteractor = Get.find<RemoveEmailDraftsInteractor>();
|
||||
final EmailReceiveManager _emailReceiveManager = Get.find<EmailReceiveManager>();
|
||||
@@ -873,8 +875,12 @@ class MailboxDashBoardController extends ReloadableController
|
||||
await super.injectFCMBindings(session, accountId);
|
||||
await LocalNotificationManager.instance.recreateStreamController();
|
||||
_registerLocalNotificationStreamListener();
|
||||
} catch (e) {
|
||||
logWarning('MailboxDashBoardController::injectFCMBindings(): $e');
|
||||
} catch (e, st) {
|
||||
logError(
|
||||
'MailboxDashBoardController::injectFCMBindings():',
|
||||
exception: e,
|
||||
stackTrace: st,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -900,15 +906,19 @@ class MailboxDashBoardController extends ReloadableController
|
||||
accountId.value = currentAccountId;
|
||||
synchronizeOwnEmailAddress(session.getOwnEmailAddressOrEmpty());
|
||||
|
||||
SentryManager.instance.setUser(
|
||||
SentryUser(
|
||||
id: currentAccountId.asString,
|
||||
name: session.getUserDisplayName(),
|
||||
username: session.username.value,
|
||||
email: session.getOwnEmailAddressOrEmpty(),
|
||||
)
|
||||
final sentryUser = SentryUser(
|
||||
id: currentAccountId.asString,
|
||||
name: session.getUserDisplayName(),
|
||||
username: session.username.value,
|
||||
email: session.getOwnEmailAddressOrEmpty(),
|
||||
);
|
||||
|
||||
if (PlatformInfo.isWeb) {
|
||||
SentryManager.instance.setUser(sentryUser);
|
||||
} else {
|
||||
initSentryUser(sentryUser);
|
||||
}
|
||||
|
||||
_setUpMinInputLengthAutocomplete();
|
||||
injectAutoCompleteBindings(session, currentAccountId);
|
||||
injectRuleFilterBindings(session, currentAccountId);
|
||||
@@ -3449,7 +3459,7 @@ class MailboxDashBoardController extends ReloadableController
|
||||
progressStateController.close();
|
||||
_refreshActionEventController.close();
|
||||
_notificationManager.closeStream();
|
||||
_fcmService.closeStream();
|
||||
unawaited(_fcmService.closeStream());
|
||||
ApplicationManager().releaseUserAgent();
|
||||
BackButtonInterceptor.removeByName(AppRoutes.dashboard);
|
||||
_identities = null;
|
||||
|
||||
+13
@@ -10,6 +10,7 @@ extension SetupScribePromptUrlExtension on MailboxDashBoardController {
|
||||
void loadLinagoraEcosystem() {
|
||||
if (cachedLinagoraEcosystem != null) {
|
||||
_applyScribePromptUrl(cachedLinagoraEcosystem!.scribePromptUrl);
|
||||
_setUpSentry(cachedLinagoraEcosystem!);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -30,6 +31,7 @@ extension SetupScribePromptUrlExtension on MailboxDashBoardController {
|
||||
void handleGetLinagoraEcosystemSuccess(GetLinagoraEcosystemSuccess success) {
|
||||
cachedLinagoraEcosystem = success.linagoraEcosystem;
|
||||
_applyScribePromptUrl(cachedLinagoraEcosystem!.scribePromptUrl);
|
||||
_setUpSentry(cachedLinagoraEcosystem!);
|
||||
}
|
||||
|
||||
void handleGetLinagoraEcosystemFailure(GetLinagoraEcosystemFailure failure) {
|
||||
@@ -47,4 +49,15 @@ extension SetupScribePromptUrlExtension on MailboxDashBoardController {
|
||||
logWarning('SetupScribePromptUrlExtension::_applyScribePromptUrl: PromptService not found');
|
||||
}
|
||||
}
|
||||
|
||||
void _setUpSentry(LinagoraEcosystem ecosystem) {
|
||||
final sentryConfigEcosystem = ecosystem.sentryConfigEcosystem;
|
||||
if (sentryConfigEcosystem != null) {
|
||||
setUpSentry(sentryConfigEcosystem);
|
||||
} else {
|
||||
logWarning(
|
||||
'LinagoraEcosystemController:_setUpSentry: Sentry config ecosystem is null',
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,79 @@
|
||||
import 'package:core/presentation/extensions/string_extension.dart';
|
||||
import 'package:core/utils/app_logger.dart';
|
||||
import 'package:core/utils/sentry/sentry_config.dart';
|
||||
import 'package:core/utils/sentry/sentry_manager.dart';
|
||||
import 'package:sentry_flutter/sentry_flutter.dart';
|
||||
import 'package:tmail_ui_user/features/caching/caching_manager.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/linagora_ecosystem/sentry_config_linagora_ecosystem.dart';
|
||||
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
||||
|
||||
mixin SentryEcosystemMixin {
|
||||
SentryUser? _sentryUser;
|
||||
|
||||
void initSentryUser(SentryUser? newSentryUser) {
|
||||
_sentryUser = newSentryUser;
|
||||
}
|
||||
|
||||
Future<void> setUpSentry(
|
||||
SentryConfigLinagoraEcosystem ecosystemConfig,
|
||||
) async {
|
||||
final dsn = ecosystemConfig.dsn?.trimmed;
|
||||
final env = ecosystemConfig.environment?.trimmed;
|
||||
final isValid = ecosystemConfig.enabled == true
|
||||
&& (dsn?.isNotEmpty ?? false)
|
||||
&& (env?.isNotEmpty ?? false);
|
||||
|
||||
if (!isValid) {
|
||||
logWarning(
|
||||
'SentryEcosystemMixin::setUpSentry: config invalid '
|
||||
'(enabled=${ecosystemConfig.enabled}, dsn=${dsn?.isNotEmpty}, env=${env?.isNotEmpty})',
|
||||
);
|
||||
await clearSentryConfiguration();
|
||||
return;
|
||||
}
|
||||
|
||||
final sentryConfig = await ecosystemConfig.toSentryConfig();
|
||||
|
||||
await SentryManager.instance.initializeWithSentryConfig(sentryConfig);
|
||||
|
||||
_setupSentryUser();
|
||||
|
||||
await _saveSentryConfiguration(
|
||||
sentryConfig: sentryConfig,
|
||||
sentryUser: _sentryUser,
|
||||
);
|
||||
}
|
||||
|
||||
void _setupSentryUser() {
|
||||
if (_sentryUser == null) return;
|
||||
|
||||
SentryManager.instance.setUser(_sentryUser!);
|
||||
}
|
||||
|
||||
Future<void> _saveSentryConfiguration({
|
||||
required SentryConfig sentryConfig,
|
||||
SentryUser? sentryUser,
|
||||
}) async {
|
||||
final cachingManager = getBinding<CachingManager>();
|
||||
if (cachingManager != null) {
|
||||
await cachingManager.saveSentryConfiguration(sentryConfig);
|
||||
|
||||
if (sentryUser != null) {
|
||||
await cachingManager.saveSentryUser(sentryUser);
|
||||
}
|
||||
} else {
|
||||
logTrace(
|
||||
'SentryEcosystemMixin::saveSentryConfiguration: CachingManager is null');
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> clearSentryConfiguration() async {
|
||||
final cachingManager = getBinding<CachingManager>();
|
||||
if (cachingManager != null) {
|
||||
await cachingManager.clearSentryConfiguration();
|
||||
} else {
|
||||
logTrace(
|
||||
'SentryEcosystemMixin::clearSentryConfiguration: CachingManager is null');
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user