Keep contact support button in app bar on desktop

Signed-off-by: dab246 <tdvu@linagora.com>
This commit is contained in:
dab246
2025-05-23 17:26:44 +07:00
committed by Dat H. Pham
parent ca264dde9c
commit 9e6e9574b1
3 changed files with 34 additions and 0 deletions
@@ -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(
@@ -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: [
@@ -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) {