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/linagora_ecosystem/linagora_ecosystem.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/linagora_ecosystem_repository.dart';
|
||||||
|
|
||||||
class LinagoraEcosystemRepositoryImpl extends LinagoraEcosystemRepository {
|
class LinagoraEcosystemRepositoryImpl extends LinagoraEcosystemRepository {
|
||||||
final LinagoraEcosystemApi _linagoraEcosystemApi;
|
final LinagoraEcosystemDatasource _ecosystemDatasource;
|
||||||
|
|
||||||
LinagoraEcosystemRepositoryImpl(this._linagoraEcosystemApi);
|
LinagoraEcosystemRepositoryImpl(this._ecosystemDatasource);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<LinagoraEcosystem> getLinagoraEcosystem(String baseUrl) {
|
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.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_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/linagora_ecosystem_properties.dart';
|
||||||
|
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/linagora_ecosystem/sentry_config_linagora_ecosystem.dart';
|
||||||
|
|
||||||
class LinagoraEcosystemConverter {
|
class LinagoraEcosystemConverter {
|
||||||
static final defaultConverter = LinagoraEcosystemConverter();
|
static final defaultConverter = LinagoraEcosystemConverter();
|
||||||
@@ -29,6 +30,7 @@ class LinagoraEcosystemConverter {
|
|||||||
LinagoraEcosystemIdentifier.mobileApps: MobileAppsLinagoraEcosystemConverter.deserialize,
|
LinagoraEcosystemIdentifier.mobileApps: MobileAppsLinagoraEcosystemConverter.deserialize,
|
||||||
LinagoraEcosystemIdentifier.paywallURL: ApiUrlLinagoraEcosystem.deserialize,
|
LinagoraEcosystemIdentifier.paywallURL: ApiUrlLinagoraEcosystem.deserialize,
|
||||||
LinagoraEcosystemIdentifier.scribePromptUrl: 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_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/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/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 {
|
class LinagoraEcosystem with EquatableMixin {
|
||||||
final Map<LinagoraEcosystemIdentifier, LinagoraEcosystemProperties?>? properties;
|
final Map<LinagoraEcosystemIdentifier, LinagoraEcosystemProperties?>? properties;
|
||||||
@@ -48,4 +49,8 @@ extension LinagoraEcosystemExtension on LinagoraEcosystem {
|
|||||||
|
|
||||||
String? get scribePromptUrl =>
|
String? get scribePromptUrl =>
|
||||||
(properties?[LinagoraEcosystemIdentifier.scribePromptUrl] as ApiUrlLinagoraEcosystem?)?.value;
|
(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 linShare = LinagoraEcosystemIdentifier('LinShare');
|
||||||
static final paywallURL = LinagoraEcosystemIdentifier('paywallUrlTemplate');
|
static final paywallURL = LinagoraEcosystemIdentifier('paywallUrlTemplate');
|
||||||
static final scribePromptUrl = LinagoraEcosystemIdentifier('scribePromptUrl');
|
static final scribePromptUrl = LinagoraEcosystemIdentifier('scribePromptUrl');
|
||||||
|
static final sentryConfig = LinagoraEcosystemIdentifier('sentry');
|
||||||
|
|
||||||
final String value;
|
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:core/presentation/state/failure.dart';
|
||||||
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.dart';
|
||||||
|
|
||||||
|
class GettingLinagoraEcosystem extends LoadingState {}
|
||||||
|
|
||||||
class GetLinagoraEcosystemSuccess extends Success {
|
class GetLinagoraEcosystemSuccess extends Success {
|
||||||
final LinagoraEcosystem linagoraEcosystem;
|
final LinagoraEcosystem linagoraEcosystem;
|
||||||
|
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ class GetLinagoraEcosystemInteractor {
|
|||||||
|
|
||||||
Stream<Either<Failure, Success>> execute(String baseUrl) async* {
|
Stream<Either<Failure, Success>> execute(String baseUrl) async* {
|
||||||
try {
|
try {
|
||||||
|
yield Right(GettingLinagoraEcosystem());
|
||||||
final linagoraEcosystem = await _linagoraEcosystemRepository.getLinagoraEcosystem(baseUrl);
|
final linagoraEcosystem = await _linagoraEcosystemRepository.getLinagoraEcosystem(baseUrl);
|
||||||
|
|
||||||
yield Right(GetLinagoraEcosystemSuccess(linagoraEcosystem));
|
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/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/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/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/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/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/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/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/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/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_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_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_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_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_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_spam_report_state_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_stored_email_sort_order_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_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/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/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/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/app_grid_dashboard_controller.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/mailbox_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(() => EmptySpamFolderInteractor(Get.find<ThreadRepository>()));
|
||||||
Get.lazyPut(() => GetAppDashboardConfigurationInteractor(Get.find<AppGridRepository>()));
|
Get.lazyPut(() => GetAppDashboardConfigurationInteractor(Get.find<AppGridRepository>()));
|
||||||
Get.lazyPut(() => GetAppGridLinagraEcosystemInteractor(Get.find<AppGridRepository>()));
|
Get.lazyPut(() => GetAppGridLinagraEcosystemInteractor(Get.find<AppGridRepository>()));
|
||||||
Get.lazyPut(() => GetLinagoraEcosystemInteractor(Get.find<LinagoraEcosystemRepository>()));
|
|
||||||
Get.lazyPut(() => GetEmailByIdInteractor(
|
Get.lazyPut(() => GetEmailByIdInteractor(
|
||||||
Get.find<ThreadRepository>(),
|
Get.find<ThreadRepository>(),
|
||||||
Get.find<EmailRepository>()));
|
Get.find<EmailRepository>()));
|
||||||
@@ -435,6 +432,7 @@ class MailboxDashBoardBindings extends BaseBindings {
|
|||||||
);
|
);
|
||||||
|
|
||||||
EmailActionInteractorBindings(Get.find<EmailRepository>()).dependencies();
|
EmailActionInteractorBindings(Get.find<EmailRepository>()).dependencies();
|
||||||
|
LinagoraEcosystemInteractorBindings().dependencies();
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -450,7 +448,6 @@ class MailboxDashBoardBindings extends BaseBindings {
|
|||||||
Get.lazyPut<ServerSettingsRepository>(() => Get.find<ServerSettingsRepositoryImpl>());
|
Get.lazyPut<ServerSettingsRepository>(() => Get.find<ServerSettingsRepositoryImpl>());
|
||||||
Get.lazyPut<IdentityCreatorRepository>(() => Get.find<IdentityCreatorRepositoryImpl>());
|
Get.lazyPut<IdentityCreatorRepository>(() => Get.find<IdentityCreatorRepositoryImpl>());
|
||||||
Get.lazyPut<AppGridRepository>(() => Get.find<AppGridRepositoryImpl>());
|
Get.lazyPut<AppGridRepository>(() => Get.find<AppGridRepositoryImpl>());
|
||||||
Get.lazyPut<LinagoraEcosystemRepository>(() => Get.find<LinagoraEcosystemRepositoryImpl>());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -503,6 +500,5 @@ class MailboxDashBoardBindings extends BaseBindings {
|
|||||||
DataSourceType.network: Get.find<AppGridDatasource>(),
|
DataSourceType.network: Get.find<AppGridDatasource>(),
|
||||||
DataSourceType.local: Get.find<LocalAppGridDatasourceImpl>()
|
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/extensions/presentation_mailbox_extension.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_actions.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/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/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_composer_cache_state.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/get_linagora_ecosystem_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_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/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/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/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/download/download_task_state.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/draggable_app_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/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/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/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/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/create_new_rule_filter_state.dart';
|
||||||
import 'package:tmail_ui_user/features/manage_account/domain/state/get_ai_scribe_config_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,
|
AiScribeMixin,
|
||||||
SearchLabelFilterModalMixin,
|
SearchLabelFilterModalMixin,
|
||||||
AddLabelToEmailMixin,
|
AddLabelToEmailMixin,
|
||||||
HandleTeamMailboxMixin {
|
HandleTeamMailboxMixin,
|
||||||
|
SentryEcosystemMixin {
|
||||||
|
|
||||||
final RemoveEmailDraftsInteractor _removeEmailDraftsInteractor = Get.find<RemoveEmailDraftsInteractor>();
|
final RemoveEmailDraftsInteractor _removeEmailDraftsInteractor = Get.find<RemoveEmailDraftsInteractor>();
|
||||||
final EmailReceiveManager _emailReceiveManager = Get.find<EmailReceiveManager>();
|
final EmailReceiveManager _emailReceiveManager = Get.find<EmailReceiveManager>();
|
||||||
@@ -873,8 +875,12 @@ class MailboxDashBoardController extends ReloadableController
|
|||||||
await super.injectFCMBindings(session, accountId);
|
await super.injectFCMBindings(session, accountId);
|
||||||
await LocalNotificationManager.instance.recreateStreamController();
|
await LocalNotificationManager.instance.recreateStreamController();
|
||||||
_registerLocalNotificationStreamListener();
|
_registerLocalNotificationStreamListener();
|
||||||
} catch (e) {
|
} catch (e, st) {
|
||||||
logWarning('MailboxDashBoardController::injectFCMBindings(): $e');
|
logError(
|
||||||
|
'MailboxDashBoardController::injectFCMBindings():',
|
||||||
|
exception: e,
|
||||||
|
stackTrace: st,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -900,15 +906,19 @@ class MailboxDashBoardController extends ReloadableController
|
|||||||
accountId.value = currentAccountId;
|
accountId.value = currentAccountId;
|
||||||
synchronizeOwnEmailAddress(session.getOwnEmailAddressOrEmpty());
|
synchronizeOwnEmailAddress(session.getOwnEmailAddressOrEmpty());
|
||||||
|
|
||||||
SentryManager.instance.setUser(
|
final sentryUser = SentryUser(
|
||||||
SentryUser(
|
id: currentAccountId.asString,
|
||||||
id: currentAccountId.asString,
|
name: session.getUserDisplayName(),
|
||||||
name: session.getUserDisplayName(),
|
username: session.username.value,
|
||||||
username: session.username.value,
|
email: session.getOwnEmailAddressOrEmpty(),
|
||||||
email: session.getOwnEmailAddressOrEmpty(),
|
|
||||||
)
|
|
||||||
);
|
);
|
||||||
|
|
||||||
|
if (PlatformInfo.isWeb) {
|
||||||
|
SentryManager.instance.setUser(sentryUser);
|
||||||
|
} else {
|
||||||
|
initSentryUser(sentryUser);
|
||||||
|
}
|
||||||
|
|
||||||
_setUpMinInputLengthAutocomplete();
|
_setUpMinInputLengthAutocomplete();
|
||||||
injectAutoCompleteBindings(session, currentAccountId);
|
injectAutoCompleteBindings(session, currentAccountId);
|
||||||
injectRuleFilterBindings(session, currentAccountId);
|
injectRuleFilterBindings(session, currentAccountId);
|
||||||
@@ -3449,7 +3459,7 @@ class MailboxDashBoardController extends ReloadableController
|
|||||||
progressStateController.close();
|
progressStateController.close();
|
||||||
_refreshActionEventController.close();
|
_refreshActionEventController.close();
|
||||||
_notificationManager.closeStream();
|
_notificationManager.closeStream();
|
||||||
_fcmService.closeStream();
|
unawaited(_fcmService.closeStream());
|
||||||
ApplicationManager().releaseUserAgent();
|
ApplicationManager().releaseUserAgent();
|
||||||
BackButtonInterceptor.removeByName(AppRoutes.dashboard);
|
BackButtonInterceptor.removeByName(AppRoutes.dashboard);
|
||||||
_identities = null;
|
_identities = null;
|
||||||
|
|||||||
+13
@@ -10,6 +10,7 @@ extension SetupScribePromptUrlExtension on MailboxDashBoardController {
|
|||||||
void loadLinagoraEcosystem() {
|
void loadLinagoraEcosystem() {
|
||||||
if (cachedLinagoraEcosystem != null) {
|
if (cachedLinagoraEcosystem != null) {
|
||||||
_applyScribePromptUrl(cachedLinagoraEcosystem!.scribePromptUrl);
|
_applyScribePromptUrl(cachedLinagoraEcosystem!.scribePromptUrl);
|
||||||
|
_setUpSentry(cachedLinagoraEcosystem!);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -30,6 +31,7 @@ extension SetupScribePromptUrlExtension on MailboxDashBoardController {
|
|||||||
void handleGetLinagoraEcosystemSuccess(GetLinagoraEcosystemSuccess success) {
|
void handleGetLinagoraEcosystemSuccess(GetLinagoraEcosystemSuccess success) {
|
||||||
cachedLinagoraEcosystem = success.linagoraEcosystem;
|
cachedLinagoraEcosystem = success.linagoraEcosystem;
|
||||||
_applyScribePromptUrl(cachedLinagoraEcosystem!.scribePromptUrl);
|
_applyScribePromptUrl(cachedLinagoraEcosystem!.scribePromptUrl);
|
||||||
|
_setUpSentry(cachedLinagoraEcosystem!);
|
||||||
}
|
}
|
||||||
|
|
||||||
void handleGetLinagoraEcosystemFailure(GetLinagoraEcosystemFailure failure) {
|
void handleGetLinagoraEcosystemFailure(GetLinagoraEcosystemFailure failure) {
|
||||||
@@ -47,4 +49,15 @@ extension SetupScribePromptUrlExtension on MailboxDashBoardController {
|
|||||||
logWarning('SetupScribePromptUrlExtension::_applyScribePromptUrl: PromptService not found');
|
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