TF-3260 Load & Display App Grid Linagora Ecosystem

Signed-off-by: dab246 <tdvu@linagora.com>
This commit is contained in:
dab246
2024-12-09 12:40:57 +07:00
committed by Dat H. Pham
parent 95f05c4715
commit dce74b43e9
48 changed files with 894 additions and 435 deletions
@@ -1,27 +1,20 @@
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/repository/app_grid_repository.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/get_app_dashboard_configuration_state.dart';
class GetAppDashboardConfigurationInteractor {
final AppConfigLoader _appConfigLoader;
final AppGridRepository _appGridRepository;
GetAppDashboardConfigurationInteractor(this._appConfigLoader);
GetAppDashboardConfigurationInteractor(this._appGridRepository);
Stream<Either<Failure, Success>> execute(String appDashboardConfigurationPath) async* {
Stream<Either<Failure, Success>> execute(String path) async* {
try {
yield Right(LoadingAppDashboardConfiguration());
final linagoraApps = await _appConfigLoader.load<LinagoraApplications>(
appDashboardConfigurationPath,
AppDashboardConfigurationParser()
);
yield Right(GetAppDashboardConfigurationSuccess(linagoraApps));
final linagoraApps = await _appGridRepository.getLinagoraApplications(path);
yield Right(GetAppDashboardConfigurationSuccess(linagoraApps.apps));
} catch (e) {
logError('GetAppDashboardConfigurationInteractor::execute(): $e');
yield Left(GetAppDashboardConfigurationFailure(e));
@@ -0,0 +1,30 @@
import 'package:core/presentation/state/failure.dart';
import 'package:core/presentation/state/success.dart';
import 'package:core/utils/platform_info.dart';
import 'package:dartz/dartz.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/linagora_ecosystem/app_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/app_grid_repository.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/get_app_grid_linagora_ecosystem_state.dart';
class GetAppGridLinagraEcosystemInteractor {
final AppGridRepository _appGridRepository;
GetAppGridLinagraEcosystemInteractor(this._appGridRepository);
Stream<Either<Failure, Success>> execute(String baseUrl) async* {
try {
yield Right(LoadingAppGridLinagraEcosystem());
final linagoraEcosystem = await _appGridRepository.getLinagoraEcosystem(baseUrl);
List<AppLinagoraEcosystem> listMobileAppLinagora = linagoraEcosystem.listAppLinagoraEcosystem;
if (PlatformInfo.isAndroid) {
listMobileAppLinagora = linagoraEcosystem.listAppLinagoraEcosystemOnAndroid;
} else if (PlatformInfo.isIOS) {
listMobileAppLinagora = linagoraEcosystem.listAppLinagoraEcosystemOnIOS;
}
yield Right(GetAppGridLinagraEcosystemSuccess(listMobileAppLinagora));
} catch (e) {
yield Left(GetAppGridLinagraEcosystemFailure(e));
}
}
}