diff --git a/lib/features/mailbox/presentation/base_mailbox_view.dart b/lib/features/mailbox/presentation/base_mailbox_view.dart index d8bbd794a..7ffa09f3f 100644 --- a/lib/features/mailbox/presentation/base_mailbox_view.dart +++ b/lib/features/mailbox/presentation/base_mailbox_view.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:tmail_ui_user/features/base/mixin/app_loader_mixin.dart'; +import 'package:tmail_ui_user/features/home/domain/extensions/session_extensions.dart'; import 'package:tmail_ui_user/features/mailbox/presentation/extensions/open_app_grid_extension.dart'; import 'package:tmail_ui_user/features/mailbox/presentation/mailbox_controller.dart'; import 'package:tmail_ui_user/features/mailbox/presentation/mixin/mailbox_widget_mixin.dart'; @@ -17,6 +18,7 @@ abstract class BaseMailboxView extends GetWidget return Obx(() { final dashboardController = controller.mailboxDashBoardController; final accountId = dashboardController.accountId.value; + final session = dashboardController.sessionCurrent; final username = accountId != null ? dashboardController.getOwnEmailAddress() : ''; @@ -25,13 +27,20 @@ abstract class BaseMailboxView extends GetWidget .appGridDashboardController .listLinagoraApp; + final contactSupportCapability = accountId != null && session != null + ? session.getContactSupportCapability(accountId) + : null; + return MailboxAppBar( imagePaths: controller.imagePaths, username: username, - openSettingsAction: controller.mailboxDashBoardController.goToSettings, - onOpenAppGridAction: linagoraApps.isNotEmpty + openSettingsAction: dashboardController.goToSettings, + openAppGridAction: linagoraApps.isNotEmpty ? () => controller.openAppGrid(linagoraApps) : null, + openContactSupportAction: contactSupportCapability?.isAvailable == true + ? () => dashboardController.onGetHelpOrReportBug(contactSupportCapability!) + : null, ); }); } diff --git a/lib/features/mailbox/presentation/widgets/mailbox_app_bar.dart b/lib/features/mailbox/presentation/widgets/mailbox_app_bar.dart index 0bebb39e9..7aa048ad5 100644 --- a/lib/features/mailbox/presentation/widgets/mailbox_app_bar.dart +++ b/lib/features/mailbox/presentation/widgets/mailbox_app_bar.dart @@ -3,22 +3,26 @@ import 'package:flutter/material.dart'; import 'package:tmail_ui_user/features/base/widget/application_logo_with_text_widget.dart'; import 'package:tmail_ui_user/features/base/widget/user_avatar_builder.dart'; import 'package:tmail_ui_user/features/mailbox/presentation/widgets/app_grid/app_grid_icon.dart'; +import 'package:tmail_ui_user/features/mailbox/presentation/widgets/support/contact_support_icon.dart'; typedef OnOpenSettingsAction = void Function(); typedef OnOpenAppGridAction = void Function(); +typedef OnOpenContactSupportAction = void Function(); class MailboxAppBar extends StatelessWidget { final ImagePaths imagePaths; final String username; final OnOpenSettingsAction? openSettingsAction; - final OnOpenAppGridAction? onOpenAppGridAction; + final OnOpenAppGridAction? openAppGridAction; + final OnOpenContactSupportAction? openContactSupportAction; const MailboxAppBar({ super.key, required this.imagePaths, required this.username, this.openSettingsAction, - this.onOpenAppGridAction, + this.openAppGridAction, + this.openContactSupportAction, }); @override @@ -33,10 +37,15 @@ class MailboxAppBar extends StatelessWidget { children: [ ApplicationLogoWidthTextWidget(iconSize: 22), const Spacer(), - if (onOpenAppGridAction != null) + if (openContactSupportAction != null) + ContactSupportIcon( + icon: imagePaths.icHelp, + onTapAction: openContactSupportAction!, + ), + if (openAppGridAction != null) AppGridIcon( icon: imagePaths.icAppDashboard, - onTapAction: onOpenAppGridAction!, + onTapAction: openAppGridAction!, ), UserAvatarBuilder( username: username, diff --git a/lib/features/mailbox/presentation/widgets/support/contact_support_icon.dart b/lib/features/mailbox/presentation/widgets/support/contact_support_icon.dart new file mode 100644 index 000000000..0d159bbe2 --- /dev/null +++ b/lib/features/mailbox/presentation/widgets/support/contact_support_icon.dart @@ -0,0 +1,27 @@ +import 'package:core/presentation/extensions/color_extension.dart'; +import 'package:core/presentation/views/button/tmail_button_widget.dart'; +import 'package:flutter/material.dart'; + +class ContactSupportIcon extends StatelessWidget { + + final String icon; + final VoidCallback onTapAction; + + const ContactSupportIcon({ + super.key, + required this.icon, + required this.onTapAction, + }); + + @override + Widget build(BuildContext context) { + return TMailButtonWidget.fromIcon( + icon: icon, + backgroundColor: Colors.transparent, + iconSize: 24, + iconColor: AppColor.blackAlpha40, + padding: const EdgeInsets.all(8), + onTapActionCallback: onTapAction, + ); + } +}