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(); }