From 8877651894f4c24d2a52f0e7c47dc51395e6c6d9 Mon Sep 17 00:00:00 2001 From: Dat PHAM HOANG Date: Sat, 15 Oct 2022 00:13:12 +0700 Subject: [PATCH] TF-1018 Implement GetAppDashboardConfiguration interactor --- ...get_app_dashboard_configuration_state.dart | 24 +++++++++++++++ ...pp_dashboard_configuration_interactor.dart | 30 +++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 lib/features/mailbox_dashboard/domain/state/get_app_dashboard_configuration_state.dart create mode 100644 lib/features/mailbox_dashboard/domain/usecases/get_app_dashboard_configuration_interactor.dart diff --git a/lib/features/mailbox_dashboard/domain/state/get_app_dashboard_configuration_state.dart b/lib/features/mailbox_dashboard/domain/state/get_app_dashboard_configuration_state.dart new file mode 100644 index 000000000..73316bbfb --- /dev/null +++ b/lib/features/mailbox_dashboard/domain/state/get_app_dashboard_configuration_state.dart @@ -0,0 +1,24 @@ +import 'package:core/presentation/state/failure.dart'; +import 'package:core/presentation/state/success.dart'; +import 'package:tmail_ui_user/features/mailbox_dashboard/domain/app_dashboard/linagora_applications.dart'; + +class LoadingAppDashboardConfiguration extends UIState {} + +class GetAppDashboardConfigurationSuccess extends UIState { + + final LinagoraApplications linagoraApplications; + + GetAppDashboardConfigurationSuccess(this.linagoraApplications); + + @override + List get props => [linagoraApplications]; +} + +class GetAppDashboardConfigurationFailure extends FeatureFailure { + final dynamic exception; + + GetAppDashboardConfigurationFailure(this.exception); + + @override + List get props => [exception]; +} \ No newline at end of file diff --git a/lib/features/mailbox_dashboard/domain/usecases/get_app_dashboard_configuration_interactor.dart b/lib/features/mailbox_dashboard/domain/usecases/get_app_dashboard_configuration_interactor.dart new file mode 100644 index 000000000..fec5053e4 --- /dev/null +++ b/lib/features/mailbox_dashboard/domain/usecases/get_app_dashboard_configuration_interactor.dart @@ -0,0 +1,30 @@ +import 'package:core/presentation/state/failure.dart'; +import 'package:core/presentation/state/success.dart'; +import 'package:core/utils/app_logger.dart'; +import 'package:core/utils/config/app_config_loader.dart'; +import 'package:dartz/dartz.dart'; +import 'package:tmail_ui_user/features/mailbox_dashboard/domain/app_dashboard/app_dashboard_configuration_parser.dart'; +import 'package:tmail_ui_user/features/mailbox_dashboard/domain/app_dashboard/linagora_applications.dart'; +import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/get_app_dashboard_configuration_state.dart'; + +class GetAppDashboardConfigurationInteractor { + final AppConfigLoader _appConfigLoader; + + GetAppDashboardConfigurationInteractor(this._appConfigLoader); + + Stream> execute(String appDashboardConfigurationPath) async* { + try { + yield Right(LoadingAppDashboardConfiguration()); + + final linagoraApps = await _appConfigLoader.load( + appDashboardConfigurationPath, + AppDashboardConfigurationParser() + ); + + yield Right(GetAppDashboardConfigurationSuccess(linagoraApps)); + } catch (e) { + logError('GetAppDashboardConfigurationInteractor::execute(): $e'); + yield Left(GetAppDashboardConfigurationFailure(e)); + } + } +} \ No newline at end of file