From 3beb9ec6063b701a9a96dfa85c1dd4e058f1c764 Mon Sep 17 00:00:00 2001 From: Dat PHAM HOANG Date: Fri, 16 Sep 2022 11:20:35 +0700 Subject: [PATCH] TF-939 Check EmailRules & Forwarding & Vacation based on accountCapabilities to visible in Menu --- .../manage_account_dashboard_controller.dart | 11 +++++++++++ .../menu/manage_account_menu_controller.dart | 4 +++- .../presentation/menu/settings/settings_view.dart | 6 +++++- 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/lib/features/manage_account/presentation/manage_account_dashboard_controller.dart b/lib/features/manage_account/presentation/manage_account_dashboard_controller.dart index 05973ff4e..7842d4931 100644 --- a/lib/features/manage_account/presentation/manage_account_dashboard_controller.dart +++ b/lib/features/manage_account/presentation/manage_account_dashboard_controller.dart @@ -5,6 +5,7 @@ import 'package:flutter/material.dart'; import 'package:forward/forward/capability_forward.dart'; import 'package:get/get.dart'; import 'package:jmap_dart_client/jmap/account_id.dart'; +import 'package:jmap_dart_client/jmap/core/capability/capability_identifier.dart'; import 'package:jmap_dart_client/jmap/core/session/session.dart'; import 'package:jmap_dart_client/jmap/mail/vacation/vacation_response.dart'; import 'package:model/model.dart'; @@ -209,6 +210,16 @@ class ManageAccountDashBoardController extends ReloadableController { } } + bool checkAvailableVacationInSession() { + try { + requireCapability(sessionCurrent.value!, accountId.value!, [CapabilityIdentifier.jmapVacationResponse]); + return true; + } catch(e) { + logError('ManageAccountDashBoardController::checkAvailableVacationInSession(): exception = $e'); + return false; + } + } + bool checkAvailableRuleFilterInSession() { try { requireCapability(sessionCurrent.value!, accountId.value!, [capabilityRuleFilter]); diff --git a/lib/features/manage_account/presentation/menu/manage_account_menu_controller.dart b/lib/features/manage_account/presentation/menu/manage_account_menu_controller.dart index 13802bec1..5f008fa51 100644 --- a/lib/features/manage_account/presentation/menu/manage_account_menu_controller.dart +++ b/lib/features/manage_account/presentation/menu/manage_account_menu_controller.dart @@ -43,7 +43,9 @@ class ManageAccountMenuController extends BaseController { if (dashBoardController.checkAvailableForwardInSession()) { listAccountMenuItem.add(AccountMenuItem.forward); } - listAccountMenuItem.add(AccountMenuItem.vacation); + if (dashBoardController.checkAvailableVacationInSession()) { + listAccountMenuItem.add(AccountMenuItem.vacation); + } listAccountMenuItem.add(AccountMenuItem.languageAndRegion); } diff --git a/lib/features/manage_account/presentation/menu/settings/settings_view.dart b/lib/features/manage_account/presentation/menu/settings/settings_view.dart index 362e432ab..8637d23a7 100644 --- a/lib/features/manage_account/presentation/menu/settings/settings_view.dart +++ b/lib/features/manage_account/presentation/menu/settings/settings_view.dart @@ -213,7 +213,11 @@ class SettingsView extends GetWidget { return const SizedBox.shrink(); } case AccountMenuItem.vacation: - return VacationView(); + if (controller.manageAccountDashboardController.checkAvailableVacationInSession()) { + return VacationView(); + } else { + return const SizedBox.shrink(); + } default: return const SizedBox.shrink(); }