From 0104e38431202738cf7a7b5319c2458b10441eed Mon Sep 17 00:00:00 2001 From: Dat PHAM HOANG Date: Sat, 15 Oct 2022 00:14:51 +0700 Subject: [PATCH] TF-1018 Add AppGridDashboardController to handle appGridDashboard --- .../presentation/resources/assets_paths.dart | 1 + .../presentation/resources/image_paths.dart | 5 +++ .../app_grid_dashboard_controller.dart | 31 +++++++++++++++++++ .../mailbox_dashboard_controller.dart | 14 +++++++++ 4 files changed, 51 insertions(+) create mode 100644 lib/features/mailbox_dashboard/presentation/controller/app_grid_dashboard_controller.dart diff --git a/core/lib/presentation/resources/assets_paths.dart b/core/lib/presentation/resources/assets_paths.dart index f74f83107..40734a562 100644 --- a/core/lib/presentation/resources/assets_paths.dart +++ b/core/lib/presentation/resources/assets_paths.dart @@ -1,3 +1,4 @@ class AssetsPaths { static const images = 'assets/images/'; + static const configurationImages = 'configurations/icons/'; } \ No newline at end of file diff --git a/core/lib/presentation/resources/image_paths.dart b/core/lib/presentation/resources/image_paths.dart index bb2adf646..be764f062 100644 --- a/core/lib/presentation/resources/image_paths.dart +++ b/core/lib/presentation/resources/image_paths.dart @@ -163,8 +163,13 @@ class ImagePaths { String get icChevronDownOutline => _getImagePath('ic_chevron_down_outline.svg'); String get icUndo => _getImagePath('ic_undo.svg'); String get icDownloadAttachment => _getImagePath('ic_download_attachment.svg'); + String get icAppDashboard => _getImagePath('ic_app_dashboard.svg'); String _getImagePath(String imageName) { return AssetsPaths.images + imageName; } + + String getConfigurationImagePath(String imageName) { + return AssetsPaths.configurationImages + imageName; + } } \ No newline at end of file diff --git a/lib/features/mailbox_dashboard/presentation/controller/app_grid_dashboard_controller.dart b/lib/features/mailbox_dashboard/presentation/controller/app_grid_dashboard_controller.dart new file mode 100644 index 000000000..974fe3ef5 --- /dev/null +++ b/lib/features/mailbox_dashboard/presentation/controller/app_grid_dashboard_controller.dart @@ -0,0 +1,31 @@ +import 'package:core/presentation/state/failure.dart'; +import 'package:core/presentation/state/success.dart'; +import 'package:core/utils/app_logger.dart'; +import 'package:dartz/dartz.dart'; +import 'package:get/get_rx/get_rx.dart'; +import 'package:tmail_ui_user/features/mailbox_dashboard/domain/app_dashboard/linagora_applications.dart'; +import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_app_dashboard_configuration_interactor.dart'; +import 'package:tmail_ui_user/main/utils/app_config.dart'; + +class AppGridDashboardController { + final isAppGridDashboardOverlayOpen = false.obs; + final linagoraApplications = Rxn(); + + final GetAppDashboardConfigurationInteractor _getAppDashboardConfigurationInteractor; + + AppGridDashboardController(this._getAppDashboardConfigurationInteractor); + + void toggleAppGridDashboard() { + isAppGridDashboardOverlayOpen.toggle(); + } + + Stream> showDashboardAction() { + return _getAppDashboardConfigurationInteractor.execute(AppConfig.appDashboardConfigurationPath); + } + + void handleShowAppDashboard(LinagoraApplications linagoraApps) { + log('AppGridDashboardController::handleShowAppDashboard(): $linagoraApps'); + isAppGridDashboardOverlayOpen.value = true; + linagoraApplications.value = linagoraApps; + } +} \ No newline at end of file diff --git a/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart b/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart index d3d6de240..9e64c32a8 100644 --- a/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart +++ b/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart @@ -42,11 +42,13 @@ import 'package:tmail_ui_user/features/login/domain/usecases/get_authenticated_a import 'package:tmail_ui_user/features/mailbox/domain/state/mark_as_mailbox_read_state.dart'; import 'package:tmail_ui_user/features/mailbox/domain/usecases/mark_as_mailbox_read_interactor.dart'; import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_actions.dart'; +import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/get_app_dashboard_configuration_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/remove_email_drafts_state.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/remove_email_drafts_interactor.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/action/dashboard_action.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/download/download_controller.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/search_controller.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/composer_overlay_state.dart'; @@ -88,6 +90,7 @@ class MailboxDashBoardController extends ReloadableController { final EmailReceiveManager _emailReceiveManager = Get.find(); final SearchController searchController = Get.find(); final DownloadController downloadController = Get.find(); + final AppGridDashboardController _appGridDashboardController = Get.find(); final MoveToMailboxInteractor _moveToMailboxInteractor; final DeleteEmailPermanentlyInteractor _deleteEmailPermanentlyInteractor; @@ -274,6 +277,8 @@ class MailboxDashBoardController extends ReloadableController { } else if (success is DeleteMultipleEmailsPermanentlyAllSuccess || success is DeleteMultipleEmailsPermanentlyHasSomeEmailFailure) { _deleteMultipleEmailsPermanentlySuccess(success); + } else if (success is GetAppDashboardConfigurationSuccess) { + _appGridDashboardController.handleShowAppDashboard(success.linagoraApplications); } } ); @@ -1131,6 +1136,15 @@ class MailboxDashBoardController extends ReloadableController { dispatchAction(EmptyTrashAction(context)); } + void showAppDashboardAction() async { + final apps = _appGridDashboardController.linagoraApplications.value; + if (apps != null) { + consumeState(Stream.value(Right(GetAppDashboardConfigurationSuccess(apps)))); + return; + } + consumeState(_appGridDashboardController.showDashboardAction()); + } + @override void onClose() { _emailReceiveManager.closeEmailReceiveManagerStream();