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