TF-3758 Update contact support in left menu on mobile
Signed-off-by: dab246 <tdvu@linagora.com>
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:tmail_ui_user/features/base/mixin/app_loader_mixin.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/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/mailbox_controller.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox/presentation/mixin/mailbox_widget_mixin.dart';
|
import 'package:tmail_ui_user/features/mailbox/presentation/mixin/mailbox_widget_mixin.dart';
|
||||||
@@ -17,6 +18,7 @@ abstract class BaseMailboxView extends GetWidget<MailboxController>
|
|||||||
return Obx(() {
|
return Obx(() {
|
||||||
final dashboardController = controller.mailboxDashBoardController;
|
final dashboardController = controller.mailboxDashBoardController;
|
||||||
final accountId = dashboardController.accountId.value;
|
final accountId = dashboardController.accountId.value;
|
||||||
|
final session = dashboardController.sessionCurrent;
|
||||||
final username = accountId != null
|
final username = accountId != null
|
||||||
? dashboardController.getOwnEmailAddress()
|
? dashboardController.getOwnEmailAddress()
|
||||||
: '';
|
: '';
|
||||||
@@ -25,13 +27,20 @@ abstract class BaseMailboxView extends GetWidget<MailboxController>
|
|||||||
.appGridDashboardController
|
.appGridDashboardController
|
||||||
.listLinagoraApp;
|
.listLinagoraApp;
|
||||||
|
|
||||||
|
final contactSupportCapability = accountId != null && session != null
|
||||||
|
? session.getContactSupportCapability(accountId)
|
||||||
|
: null;
|
||||||
|
|
||||||
return MailboxAppBar(
|
return MailboxAppBar(
|
||||||
imagePaths: controller.imagePaths,
|
imagePaths: controller.imagePaths,
|
||||||
username: username,
|
username: username,
|
||||||
openSettingsAction: controller.mailboxDashBoardController.goToSettings,
|
openSettingsAction: dashboardController.goToSettings,
|
||||||
onOpenAppGridAction: linagoraApps.isNotEmpty
|
openAppGridAction: linagoraApps.isNotEmpty
|
||||||
? () => controller.openAppGrid(linagoraApps)
|
? () => controller.openAppGrid(linagoraApps)
|
||||||
: null,
|
: null,
|
||||||
|
openContactSupportAction: contactSupportCapability?.isAvailable == true
|
||||||
|
? () => dashboardController.onGetHelpOrReportBug(contactSupportCapability!)
|
||||||
|
: null,
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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/application_logo_with_text_widget.dart';
|
||||||
import 'package:tmail_ui_user/features/base/widget/user_avatar_builder.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/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 OnOpenSettingsAction = void Function();
|
||||||
typedef OnOpenAppGridAction = void Function();
|
typedef OnOpenAppGridAction = void Function();
|
||||||
|
typedef OnOpenContactSupportAction = void Function();
|
||||||
|
|
||||||
class MailboxAppBar extends StatelessWidget {
|
class MailboxAppBar extends StatelessWidget {
|
||||||
final ImagePaths imagePaths;
|
final ImagePaths imagePaths;
|
||||||
final String username;
|
final String username;
|
||||||
final OnOpenSettingsAction? openSettingsAction;
|
final OnOpenSettingsAction? openSettingsAction;
|
||||||
final OnOpenAppGridAction? onOpenAppGridAction;
|
final OnOpenAppGridAction? openAppGridAction;
|
||||||
|
final OnOpenContactSupportAction? openContactSupportAction;
|
||||||
|
|
||||||
const MailboxAppBar({
|
const MailboxAppBar({
|
||||||
super.key,
|
super.key,
|
||||||
required this.imagePaths,
|
required this.imagePaths,
|
||||||
required this.username,
|
required this.username,
|
||||||
this.openSettingsAction,
|
this.openSettingsAction,
|
||||||
this.onOpenAppGridAction,
|
this.openAppGridAction,
|
||||||
|
this.openContactSupportAction,
|
||||||
});
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -33,10 +37,15 @@ class MailboxAppBar extends StatelessWidget {
|
|||||||
children: [
|
children: [
|
||||||
ApplicationLogoWidthTextWidget(iconSize: 22),
|
ApplicationLogoWidthTextWidget(iconSize: 22),
|
||||||
const Spacer(),
|
const Spacer(),
|
||||||
if (onOpenAppGridAction != null)
|
if (openContactSupportAction != null)
|
||||||
|
ContactSupportIcon(
|
||||||
|
icon: imagePaths.icHelp,
|
||||||
|
onTapAction: openContactSupportAction!,
|
||||||
|
),
|
||||||
|
if (openAppGridAction != null)
|
||||||
AppGridIcon(
|
AppGridIcon(
|
||||||
icon: imagePaths.icAppDashboard,
|
icon: imagePaths.icAppDashboard,
|
||||||
onTapAction: onOpenAppGridAction!,
|
onTapAction: openAppGridAction!,
|
||||||
),
|
),
|
||||||
UserAvatarBuilder(
|
UserAvatarBuilder(
|
||||||
username: username,
|
username: username,
|
||||||
|
|||||||
@@ -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,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user