TF-3181 Display contact support button on mobile app
(cherry picked from commit 01d2a9b71d937930be6ae247996a3ee1e21a5dc0)
This commit is contained in:
@@ -40,6 +40,7 @@ class TMailButtonWidget extends StatelessWidget {
|
||||
final MainAxisSize mainAxisSize;
|
||||
final bool isLoading;
|
||||
final Color? hoverColor;
|
||||
final TextOverflow? textOverflow;
|
||||
|
||||
const TMailButtonWidget({
|
||||
super.key,
|
||||
@@ -74,6 +75,7 @@ class TMailButtonWidget extends StatelessWidget {
|
||||
this.mainAxisSize = MainAxisSize.max,
|
||||
this.isLoading = false,
|
||||
this.hoverColor,
|
||||
this.textOverflow,
|
||||
});
|
||||
|
||||
factory TMailButtonWidget.fromIcon({
|
||||
@@ -149,6 +151,7 @@ class TMailButtonWidget extends StatelessWidget {
|
||||
BoxBorder? border,
|
||||
int? maxLines,
|
||||
Color? hoverColor,
|
||||
TextOverflow? textOverflow,
|
||||
}) {
|
||||
return TMailButtonWidget(
|
||||
key: key,
|
||||
@@ -172,6 +175,7 @@ class TMailButtonWidget extends StatelessWidget {
|
||||
border: border,
|
||||
maxLines: maxLines,
|
||||
hoverColor: hoverColor,
|
||||
textOverflow: textOverflow,
|
||||
);
|
||||
}
|
||||
|
||||
@@ -200,7 +204,7 @@ class TMailButtonWidget extends StatelessWidget {
|
||||
color: AppColor.colorTextButtonHeaderThread
|
||||
),
|
||||
maxLines: maxLines,
|
||||
overflow: maxLines == 1 ? CommonTextStyle.defaultTextOverFlow : null,
|
||||
overflow: textOverflow ?? (maxLines == 1 ? CommonTextStyle.defaultTextOverFlow : null),
|
||||
softWrap: maxLines == 1 ? CommonTextStyle.defaultSoftWrap : null,
|
||||
),
|
||||
if (trailingIcon != null)
|
||||
@@ -240,7 +244,7 @@ class TMailButtonWidget extends StatelessWidget {
|
||||
color: AppColor.colorTextButtonHeaderThread
|
||||
),
|
||||
maxLines: maxLines,
|
||||
overflow: maxLines == 1 ? CommonTextStyle.defaultTextOverFlow : null,
|
||||
overflow: textOverflow ?? (maxLines == 1 ? CommonTextStyle.defaultTextOverFlow : null),
|
||||
softWrap: maxLines == 1 ? CommonTextStyle.defaultSoftWrap : null,
|
||||
),
|
||||
)
|
||||
@@ -253,7 +257,7 @@ class TMailButtonWidget extends StatelessWidget {
|
||||
color: AppColor.colorTextButtonHeaderThread
|
||||
),
|
||||
maxLines: maxLines,
|
||||
overflow: maxLines == 1 ? CommonTextStyle.defaultTextOverFlow : null,
|
||||
overflow: textOverflow ?? (maxLines == 1 ? CommonTextStyle.defaultTextOverFlow : null),
|
||||
softWrap: maxLines == 1 ? CommonTextStyle.defaultSoftWrap : null,
|
||||
),
|
||||
if (trailingIcon != null)
|
||||
@@ -284,7 +288,7 @@ class TMailButtonWidget extends StatelessWidget {
|
||||
color: AppColor.colorTextButtonHeaderThread
|
||||
),
|
||||
maxLines: maxLines,
|
||||
overflow: maxLines == 1 ? CommonTextStyle.defaultTextOverFlow : null,
|
||||
overflow: textOverflow ?? (maxLines == 1 ? CommonTextStyle.defaultTextOverFlow : null),
|
||||
softWrap: maxLines == 1 ? CommonTextStyle.defaultSoftWrap : null,
|
||||
),
|
||||
)
|
||||
@@ -297,7 +301,7 @@ class TMailButtonWidget extends StatelessWidget {
|
||||
color: AppColor.colorTextButtonHeaderThread
|
||||
),
|
||||
maxLines: maxLines,
|
||||
overflow: maxLines == 1 ? CommonTextStyle.defaultTextOverFlow : null,
|
||||
overflow: textOverflow ?? (maxLines == 1 ? CommonTextStyle.defaultTextOverFlow : null),
|
||||
softWrap: maxLines == 1 ? CommonTextStyle.defaultSoftWrap : null,
|
||||
),
|
||||
SizedBox(width: iconSpace),
|
||||
@@ -339,7 +343,7 @@ class TMailButtonWidget extends StatelessWidget {
|
||||
color: AppColor.colorTextButtonHeaderThread
|
||||
),
|
||||
maxLines: maxLines,
|
||||
overflow: maxLines == 1 ? CommonTextStyle.defaultTextOverFlow : null,
|
||||
overflow: textOverflow ?? (maxLines == 1 ? CommonTextStyle.defaultTextOverFlow : null),
|
||||
softWrap: maxLines == 1 ? CommonTextStyle.defaultSoftWrap : null,
|
||||
);
|
||||
}
|
||||
|
||||
@@ -88,7 +88,7 @@ extension SessionExtensions on Session {
|
||||
accountId,
|
||||
linagoraContactSupportCapability,
|
||||
);
|
||||
log('SessionExtensions::getContactSupport:contactSupportCapability = $contactSupportCapability');
|
||||
log('SessionExtensions::getContactSupportCapability:contactSupportCapability = $contactSupportCapability');
|
||||
return contactSupportCapability;
|
||||
} catch (e) {
|
||||
logError('SessionExtensions::getContactSupportCapability():[Exception] $e');
|
||||
|
||||
@@ -21,6 +21,7 @@ import 'package:tmail_ui_user/features/base/mixin/mailbox_action_handler_mixin.d
|
||||
import 'package:tmail_ui_user/features/email/domain/model/move_action.dart';
|
||||
import 'package:tmail_ui_user/features/email/presentation/model/composer_arguments.dart';
|
||||
import 'package:tmail_ui_user/features/home/data/exceptions/session_exceptions.dart';
|
||||
import 'package:tmail_ui_user/features/home/domain/extensions/session_extensions.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/domain/constants/mailbox_constants.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/domain/exceptions/set_mailbox_name_exception.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/domain/model/create_new_mailbox_request.dart';
|
||||
@@ -1361,4 +1362,13 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM
|
||||
mailboxDashBoardController.emptySpamFolderAction(spamFolderId: presentationMailbox.id);
|
||||
}
|
||||
}
|
||||
|
||||
ContactSupportCapability? get contactSupportCapability {
|
||||
final accountId = mailboxDashBoardController.accountId.value;
|
||||
final session = mailboxDashBoardController.sessionCurrent;
|
||||
|
||||
if (accountId == null || session == null) return null;
|
||||
|
||||
return session.getContactSupportCapability(accountId);
|
||||
}
|
||||
}
|
||||
@@ -80,10 +80,52 @@ class MailboxView extends BaseMailboxView {
|
||||
}),
|
||||
]),
|
||||
),
|
||||
Obx(() => !controller.isSelectionEnabled()
|
||||
? const QuotasView()
|
||||
: const SizedBox.shrink(),
|
||||
),
|
||||
Obx(() {
|
||||
if (controller.isSelectionEnabled()) {
|
||||
return const SizedBox.shrink();
|
||||
}
|
||||
|
||||
return Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
const Divider(color: AppColor.colorDividerHorizontal),
|
||||
if (controller.contactSupportCapability == null)
|
||||
const QuotasView()
|
||||
else
|
||||
Row(
|
||||
children: [
|
||||
const Expanded(child: QuotasView()),
|
||||
Expanded(
|
||||
child: TMailButtonWidget(
|
||||
text: AppLocalizations.of(context).getHelpOrReportABug,
|
||||
icon: controller.imagePaths.icHelp,
|
||||
verticalDirection: true,
|
||||
backgroundColor: Colors.transparent,
|
||||
maxLines: 2,
|
||||
flexibleText: true,
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
margin: const EdgeInsetsDirectional.only(
|
||||
end: 12,
|
||||
start: 4,
|
||||
top: 6,
|
||||
bottom: 6,
|
||||
),
|
||||
borderRadius: 10,
|
||||
textOverflow: TextOverflow.ellipsis,
|
||||
textAlign: TextAlign.center,
|
||||
textStyle: Theme.of(context).textTheme.bodyMedium?.copyWith(
|
||||
fontSize: 13,
|
||||
fontWeight: FontWeight.w500,
|
||||
color: AppColor.primaryColor,
|
||||
),
|
||||
onTapActionCallback: () {},
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
);
|
||||
}),
|
||||
Obx(() {
|
||||
if (!controller.isSelectionEnabled() && controller.responsiveUtils.isPortraitMobile(context)) {
|
||||
return Container(
|
||||
|
||||
@@ -58,12 +58,54 @@ class MailboxView extends BaseMailboxView {
|
||||
child: _buildListMailbox(context),
|
||||
),
|
||||
)),
|
||||
const QuotasView(
|
||||
padding: EdgeInsetsDirectional.only(
|
||||
start: QuotasViewStyles.padding,
|
||||
top: QuotasViewStyles.padding,
|
||||
const Divider(color: AppColor.colorDividerHorizontal),
|
||||
if (controller.responsiveUtils.isWebDesktop(context) ||
|
||||
controller.contactSupportCapability == null)
|
||||
const QuotasView(
|
||||
padding: EdgeInsetsDirectional.only(
|
||||
start: QuotasViewStyles.padding,
|
||||
top: QuotasViewStyles.padding,
|
||||
),
|
||||
)
|
||||
else
|
||||
Row(
|
||||
children: [
|
||||
const Expanded(
|
||||
child: QuotasView(
|
||||
padding: EdgeInsetsDirectional.only(
|
||||
start: QuotasViewStyles.padding,
|
||||
top: QuotasViewStyles.padding,
|
||||
),
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
child: TMailButtonWidget(
|
||||
text: AppLocalizations.of(context).getHelpOrReportABug,
|
||||
icon: controller.imagePaths.icHelp,
|
||||
verticalDirection: true,
|
||||
backgroundColor: Colors.transparent,
|
||||
maxLines: 2,
|
||||
flexibleText: true,
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
margin: const EdgeInsetsDirectional.only(
|
||||
end: 12,
|
||||
start: 4,
|
||||
top: 6,
|
||||
bottom: 6,
|
||||
),
|
||||
borderRadius: 10,
|
||||
textOverflow: TextOverflow.ellipsis,
|
||||
textAlign: TextAlign.center,
|
||||
textStyle: Theme.of(context).textTheme.bodyMedium?.copyWith(
|
||||
fontSize: 13,
|
||||
fontWeight: FontWeight.w500,
|
||||
color: AppColor.primaryColor,
|
||||
),
|
||||
onTapActionCallback: () {},
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Container(
|
||||
color: AppColor.colorBgMailbox,
|
||||
width: double.infinity,
|
||||
@@ -130,14 +172,21 @@ class MailboxView extends BaseMailboxView {
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Expanded(child: Text(
|
||||
AppLocalizations.of(context).folders,
|
||||
style: const TextStyle(
|
||||
fontSize: 17,
|
||||
color: Colors.black,
|
||||
fontWeight: FontWeight.bold
|
||||
)
|
||||
)),
|
||||
Expanded(
|
||||
child: Padding(
|
||||
padding: EdgeInsetsDirectional.only(
|
||||
start: controller.responsiveUtils.isWebDesktop(context) ? 0 : 12,
|
||||
),
|
||||
child: Text(
|
||||
AppLocalizations.of(context).folders,
|
||||
style: const TextStyle(
|
||||
fontSize: 17,
|
||||
color: Colors.black,
|
||||
fontWeight: FontWeight.bold,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding: EdgeInsetsDirectional.only(end: controller.responsiveUtils.isDesktop(context) ? 0 : 12),
|
||||
child: Row(
|
||||
|
||||
@@ -5,7 +5,6 @@ import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:model/model.dart';
|
||||
import 'package:tmail_ui_user/features/base/state/banner_state.dart';
|
||||
import 'package:tmail_ui_user/features/home/domain/extensions/session_extensions.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/widgets/navigation_bar/navigation_bar_widget.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/always_read_receipt/always_read_receipt_view.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/email_rules/email_rules_view.dart';
|
||||
@@ -44,7 +43,6 @@ class ManageAccountDashBoardView extends GetWidget<ManageAccountDashBoardControl
|
||||
return NavigationBarWidget(
|
||||
imagePaths: controller.imagePaths,
|
||||
avatarUserName: controller.sessionCurrent?.username.firstCharacter ?? '',
|
||||
contactSupportCapability: controller.sessionCurrent?.getContactSupportCapability(accountId),
|
||||
onTapApplicationLogoAction: () => controller.backToMailboxDashBoard(context: context),
|
||||
onTapAvatarAction: (position) => controller.handleClickAvatarAction(context, position),
|
||||
);
|
||||
|
||||
@@ -31,12 +31,6 @@ class QuotasView extends GetWidget<QuotasController> {
|
||||
color: controller.responsiveUtils.isWebDesktop(context)
|
||||
? QuotasViewStyles.webBackgroundColor
|
||||
: QuotasViewStyles.mobileBackgroundColor,
|
||||
border: const Border(
|
||||
top: BorderSide(
|
||||
color: QuotasViewStyles.topLineColor,
|
||||
width: QuotasViewStyles.topLineSize,
|
||||
)
|
||||
),
|
||||
),
|
||||
alignment: AlignmentDirectional.centerStart,
|
||||
child: Column(
|
||||
@@ -59,6 +53,8 @@ class QuotasView extends GetWidget<QuotasController> {
|
||||
fontWeight: QuotasViewStyles.labelFontWeight,
|
||||
color: QuotasViewStyles.labelTextColor
|
||||
),
|
||||
maxLines: 1,
|
||||
overflow: TextOverflow.ellipsis,
|
||||
)
|
||||
],
|
||||
),
|
||||
@@ -80,6 +76,8 @@ class QuotasView extends GetWidget<QuotasController> {
|
||||
fontWeight: QuotasViewStyles.progressStateFontWeight,
|
||||
color: octetQuota.getQuotasStateTitleColor()
|
||||
),
|
||||
maxLines: 2,
|
||||
overflow: TextOverflow.ellipsis,
|
||||
)
|
||||
],
|
||||
),
|
||||
|
||||
Reference in New Issue
Block a user