TF-1018 Implement GetAppDashboardConfiguration interactor

This commit is contained in:
Dat PHAM HOANG
2022-10-15 00:13:12 +07:00
committed by Dat H. Pham
parent 2b259809f7
commit 8877651894
2 changed files with 54 additions and 0 deletions
@@ -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<Object> get props => [linagoraApplications];
}
class GetAppDashboardConfigurationFailure extends FeatureFailure {
final dynamic exception;
GetAppDashboardConfigurationFailure(this.exception);
@override
List<Object> get props => [exception];
}
@@ -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<Either<Failure, Success>> execute(String appDashboardConfigurationPath) async* {
try {
yield Right(LoadingAppDashboardConfiguration());
final linagoraApps = await _appConfigLoader.load<LinagoraApplications>(
appDashboardConfigurationPath,
AppDashboardConfigurationParser()
);
yield Right(GetAppDashboardConfigurationSuccess(linagoraApps));
} catch (e) {
logError('GetAppDashboardConfigurationInteractor::execute(): $e');
yield Left(GetAppDashboardConfigurationFailure(e));
}
}
}