diff --git a/lib/features/base/mixin/contact_support_mixin.dart b/lib/features/base/mixin/contact_support_mixin.dart index 36f3d4896..919788332 100644 --- a/lib/features/base/mixin/contact_support_mixin.dart +++ b/lib/features/base/mixin/contact_support_mixin.dart @@ -11,6 +11,8 @@ import 'package:tmail_ui_user/main/routes/route_navigation.dart'; import 'package:tmail_ui_user/main/routes/route_utils.dart'; import 'package:tmail_ui_user/main/utils/app_utils.dart'; +typedef OnTapContactSupportAction = Function(ContactSupportCapability contactSupport); + mixin ContactSupportMixin { void onGetHelpOrReportBug( diff --git a/lib/features/mailbox_dashboard/presentation/mailbox_dashboard_view_web.dart b/lib/features/mailbox_dashboard/presentation/mailbox_dashboard_view_web.dart index 015b3a81e..3585bc0a6 100644 --- a/lib/features/mailbox_dashboard/presentation/mailbox_dashboard_view_web.dart +++ b/lib/features/mailbox_dashboard/presentation/mailbox_dashboard_view_web.dart @@ -11,6 +11,7 @@ import 'package:tmail_ui_user/features/base/widget/scrollbar_list_view.dart'; import 'package:tmail_ui_user/features/composer/presentation/view/web/composer_overlay_view.dart'; import 'package:tmail_ui_user/features/email/presentation/email_view.dart'; import 'package:tmail_ui_user/features/email/presentation/model/composer_arguments.dart'; +import 'package:tmail_ui_user/features/home/domain/extensions/session_extensions.dart'; import 'package:tmail_ui_user/features/mailbox/presentation/mailbox_view_web.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/action/dashboard_action.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/base_mailbox_dashboard_view.dart'; @@ -66,11 +67,16 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView { imagePaths: controller.imagePaths, accountId: accountId, avatarUserName: controller.getOwnEmailAddress().firstCharacterToUpperCase, + contactSupportCapability: accountId != null + ? controller.sessionCurrent?.getContactSupportCapability(accountId) + : null, searchForm: SearchInputFormWidget(), appGridController: controller.appGridDashboardController, onTapApplicationLogoAction: controller.redirectToInboxAction, onTapAvatarAction: (position) => controller.handleClickAvatarAction(context, position), + onTapContactSupportAction: (contactSupport) => + controller.onGetHelpOrReportBug(contactSupport), ); }), Expanded(child: Row(children: [ diff --git a/lib/features/mailbox_dashboard/presentation/widgets/navigation_bar/navigation_bar_widget.dart b/lib/features/mailbox_dashboard/presentation/widgets/navigation_bar/navigation_bar_widget.dart index 6326dba5a..112ac71b2 100644 --- a/lib/features/mailbox_dashboard/presentation/widgets/navigation_bar/navigation_bar_widget.dart +++ b/lib/features/mailbox_dashboard/presentation/widgets/navigation_bar/navigation_bar_widget.dart @@ -1,34 +1,42 @@ import 'package:core/presentation/extensions/color_extension.dart'; import 'package:core/presentation/resources/image_paths.dart'; import 'package:core/presentation/utils/responsive_utils.dart'; +import 'package:core/presentation/views/button/tmail_button_widget.dart'; import 'package:core/presentation/views/image/avatar_builder.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:jmap_dart_client/jmap/account_id.dart'; +import 'package:model/support/contact_support_capability.dart'; +import 'package:tmail_ui_user/features/base/mixin/contact_support_mixin.dart'; import 'package:tmail_ui_user/features/base/widget/application_logo_with_text_widget.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/styles/navigation_bar_style.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/widgets/app_dashboard/app_grid_dashboard_icon.dart'; +import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; class NavigationBarWidget extends StatelessWidget { final ImagePaths imagePaths; final AccountId? accountId; final String avatarUserName; + final ContactSupportCapability? contactSupportCapability; final Widget? searchForm; final AppGridDashboardController? appGridController; final VoidCallback? onTapApplicationLogoAction; final OnTapAvatarActionWithPositionClick? onTapAvatarAction; + final OnTapContactSupportAction? onTapContactSupportAction; const NavigationBarWidget({ super.key, required this.imagePaths, required this.accountId, required this.avatarUserName, + this.contactSupportCapability, this.searchForm, this.appGridController, this.onTapApplicationLogoAction, this.onTapAvatarAction, + this.onTapContactSupportAction, }); @override @@ -58,6 +66,15 @@ class NavigationBarWidget extends StatelessWidget { child: searchForm ), const Spacer(), + if (contactSupportCapability?.isAvailable == true) + TMailButtonWidget.fromIcon( + icon: imagePaths.icHelp, + iconColor: AppColor.messageDialogColor, + backgroundColor: Colors.transparent, + margin: const EdgeInsetsDirectional.only(end: 8), + tooltipMessage: AppLocalizations.of(context).getHelpOrReportABug, + onTapActionCallback: () => onTapContactSupportAction?.call(contactSupportCapability!), + ), if (appGridController != null) Obx(() { if (appGridController!.listLinagoraApp.isNotEmpty) { @@ -92,6 +109,15 @@ class NavigationBarWidget extends StatelessWidget { else ...[ const Spacer(), + if (contactSupportCapability?.isAvailable == true) + TMailButtonWidget.fromIcon( + icon: imagePaths.icHelp, + iconColor: AppColor.messageDialogColor, + backgroundColor: Colors.transparent, + margin: const EdgeInsetsDirectional.only(end: 8), + tooltipMessage: AppLocalizations.of(context).getHelpOrReportABug, + onTapActionCallback: () => onTapContactSupportAction?.call(contactSupportCapability!), + ), if (appGridController != null) Obx(() { if (appGridController!.listLinagoraApp.isNotEmpty) {