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 MainAxisSize mainAxisSize;
|
||||||
final bool isLoading;
|
final bool isLoading;
|
||||||
final Color? hoverColor;
|
final Color? hoverColor;
|
||||||
|
final TextOverflow? textOverflow;
|
||||||
|
|
||||||
const TMailButtonWidget({
|
const TMailButtonWidget({
|
||||||
super.key,
|
super.key,
|
||||||
@@ -74,6 +75,7 @@ class TMailButtonWidget extends StatelessWidget {
|
|||||||
this.mainAxisSize = MainAxisSize.max,
|
this.mainAxisSize = MainAxisSize.max,
|
||||||
this.isLoading = false,
|
this.isLoading = false,
|
||||||
this.hoverColor,
|
this.hoverColor,
|
||||||
|
this.textOverflow,
|
||||||
});
|
});
|
||||||
|
|
||||||
factory TMailButtonWidget.fromIcon({
|
factory TMailButtonWidget.fromIcon({
|
||||||
@@ -149,6 +151,7 @@ class TMailButtonWidget extends StatelessWidget {
|
|||||||
BoxBorder? border,
|
BoxBorder? border,
|
||||||
int? maxLines,
|
int? maxLines,
|
||||||
Color? hoverColor,
|
Color? hoverColor,
|
||||||
|
TextOverflow? textOverflow,
|
||||||
}) {
|
}) {
|
||||||
return TMailButtonWidget(
|
return TMailButtonWidget(
|
||||||
key: key,
|
key: key,
|
||||||
@@ -172,6 +175,7 @@ class TMailButtonWidget extends StatelessWidget {
|
|||||||
border: border,
|
border: border,
|
||||||
maxLines: maxLines,
|
maxLines: maxLines,
|
||||||
hoverColor: hoverColor,
|
hoverColor: hoverColor,
|
||||||
|
textOverflow: textOverflow,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -200,7 +204,7 @@ class TMailButtonWidget extends StatelessWidget {
|
|||||||
color: AppColor.colorTextButtonHeaderThread
|
color: AppColor.colorTextButtonHeaderThread
|
||||||
),
|
),
|
||||||
maxLines: maxLines,
|
maxLines: maxLines,
|
||||||
overflow: maxLines == 1 ? CommonTextStyle.defaultTextOverFlow : null,
|
overflow: textOverflow ?? (maxLines == 1 ? CommonTextStyle.defaultTextOverFlow : null),
|
||||||
softWrap: maxLines == 1 ? CommonTextStyle.defaultSoftWrap : null,
|
softWrap: maxLines == 1 ? CommonTextStyle.defaultSoftWrap : null,
|
||||||
),
|
),
|
||||||
if (trailingIcon != null)
|
if (trailingIcon != null)
|
||||||
@@ -240,7 +244,7 @@ class TMailButtonWidget extends StatelessWidget {
|
|||||||
color: AppColor.colorTextButtonHeaderThread
|
color: AppColor.colorTextButtonHeaderThread
|
||||||
),
|
),
|
||||||
maxLines: maxLines,
|
maxLines: maxLines,
|
||||||
overflow: maxLines == 1 ? CommonTextStyle.defaultTextOverFlow : null,
|
overflow: textOverflow ?? (maxLines == 1 ? CommonTextStyle.defaultTextOverFlow : null),
|
||||||
softWrap: maxLines == 1 ? CommonTextStyle.defaultSoftWrap : null,
|
softWrap: maxLines == 1 ? CommonTextStyle.defaultSoftWrap : null,
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
@@ -253,7 +257,7 @@ class TMailButtonWidget extends StatelessWidget {
|
|||||||
color: AppColor.colorTextButtonHeaderThread
|
color: AppColor.colorTextButtonHeaderThread
|
||||||
),
|
),
|
||||||
maxLines: maxLines,
|
maxLines: maxLines,
|
||||||
overflow: maxLines == 1 ? CommonTextStyle.defaultTextOverFlow : null,
|
overflow: textOverflow ?? (maxLines == 1 ? CommonTextStyle.defaultTextOverFlow : null),
|
||||||
softWrap: maxLines == 1 ? CommonTextStyle.defaultSoftWrap : null,
|
softWrap: maxLines == 1 ? CommonTextStyle.defaultSoftWrap : null,
|
||||||
),
|
),
|
||||||
if (trailingIcon != null)
|
if (trailingIcon != null)
|
||||||
@@ -284,7 +288,7 @@ class TMailButtonWidget extends StatelessWidget {
|
|||||||
color: AppColor.colorTextButtonHeaderThread
|
color: AppColor.colorTextButtonHeaderThread
|
||||||
),
|
),
|
||||||
maxLines: maxLines,
|
maxLines: maxLines,
|
||||||
overflow: maxLines == 1 ? CommonTextStyle.defaultTextOverFlow : null,
|
overflow: textOverflow ?? (maxLines == 1 ? CommonTextStyle.defaultTextOverFlow : null),
|
||||||
softWrap: maxLines == 1 ? CommonTextStyle.defaultSoftWrap : null,
|
softWrap: maxLines == 1 ? CommonTextStyle.defaultSoftWrap : null,
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
@@ -297,7 +301,7 @@ class TMailButtonWidget extends StatelessWidget {
|
|||||||
color: AppColor.colorTextButtonHeaderThread
|
color: AppColor.colorTextButtonHeaderThread
|
||||||
),
|
),
|
||||||
maxLines: maxLines,
|
maxLines: maxLines,
|
||||||
overflow: maxLines == 1 ? CommonTextStyle.defaultTextOverFlow : null,
|
overflow: textOverflow ?? (maxLines == 1 ? CommonTextStyle.defaultTextOverFlow : null),
|
||||||
softWrap: maxLines == 1 ? CommonTextStyle.defaultSoftWrap : null,
|
softWrap: maxLines == 1 ? CommonTextStyle.defaultSoftWrap : null,
|
||||||
),
|
),
|
||||||
SizedBox(width: iconSpace),
|
SizedBox(width: iconSpace),
|
||||||
@@ -339,7 +343,7 @@ class TMailButtonWidget extends StatelessWidget {
|
|||||||
color: AppColor.colorTextButtonHeaderThread
|
color: AppColor.colorTextButtonHeaderThread
|
||||||
),
|
),
|
||||||
maxLines: maxLines,
|
maxLines: maxLines,
|
||||||
overflow: maxLines == 1 ? CommonTextStyle.defaultTextOverFlow : null,
|
overflow: textOverflow ?? (maxLines == 1 ? CommonTextStyle.defaultTextOverFlow : null),
|
||||||
softWrap: maxLines == 1 ? CommonTextStyle.defaultSoftWrap : null,
|
softWrap: maxLines == 1 ? CommonTextStyle.defaultSoftWrap : null,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -88,7 +88,7 @@ extension SessionExtensions on Session {
|
|||||||
accountId,
|
accountId,
|
||||||
linagoraContactSupportCapability,
|
linagoraContactSupportCapability,
|
||||||
);
|
);
|
||||||
log('SessionExtensions::getContactSupport:contactSupportCapability = $contactSupportCapability');
|
log('SessionExtensions::getContactSupportCapability:contactSupportCapability = $contactSupportCapability');
|
||||||
return contactSupportCapability;
|
return contactSupportCapability;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
logError('SessionExtensions::getContactSupportCapability():[Exception] $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/domain/model/move_action.dart';
|
||||||
import 'package:tmail_ui_user/features/email/presentation/model/composer_arguments.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/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/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/exceptions/set_mailbox_name_exception.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox/domain/model/create_new_mailbox_request.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);
|
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()
|
Obx(() {
|
||||||
? const QuotasView()
|
if (controller.isSelectionEnabled()) {
|
||||||
: const SizedBox.shrink(),
|
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(() {
|
Obx(() {
|
||||||
if (!controller.isSelectionEnabled() && controller.responsiveUtils.isPortraitMobile(context)) {
|
if (!controller.isSelectionEnabled() && controller.responsiveUtils.isPortraitMobile(context)) {
|
||||||
return Container(
|
return Container(
|
||||||
|
|||||||
@@ -58,12 +58,54 @@ class MailboxView extends BaseMailboxView {
|
|||||||
child: _buildListMailbox(context),
|
child: _buildListMailbox(context),
|
||||||
),
|
),
|
||||||
)),
|
)),
|
||||||
const QuotasView(
|
const Divider(color: AppColor.colorDividerHorizontal),
|
||||||
padding: EdgeInsetsDirectional.only(
|
if (controller.responsiveUtils.isWebDesktop(context) ||
|
||||||
start: QuotasViewStyles.padding,
|
controller.contactSupportCapability == null)
|
||||||
top: QuotasViewStyles.padding,
|
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(
|
Container(
|
||||||
color: AppColor.colorBgMailbox,
|
color: AppColor.colorBgMailbox,
|
||||||
width: double.infinity,
|
width: double.infinity,
|
||||||
@@ -130,14 +172,21 @@ class MailboxView extends BaseMailboxView {
|
|||||||
child: Row(
|
child: Row(
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
children: [
|
children: [
|
||||||
Expanded(child: Text(
|
Expanded(
|
||||||
AppLocalizations.of(context).folders,
|
child: Padding(
|
||||||
style: const TextStyle(
|
padding: EdgeInsetsDirectional.only(
|
||||||
fontSize: 17,
|
start: controller.responsiveUtils.isWebDesktop(context) ? 0 : 12,
|
||||||
color: Colors.black,
|
),
|
||||||
fontWeight: FontWeight.bold
|
child: Text(
|
||||||
)
|
AppLocalizations.of(context).folders,
|
||||||
)),
|
style: const TextStyle(
|
||||||
|
fontSize: 17,
|
||||||
|
color: Colors.black,
|
||||||
|
fontWeight: FontWeight.bold,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
Padding(
|
Padding(
|
||||||
padding: EdgeInsetsDirectional.only(end: controller.responsiveUtils.isDesktop(context) ? 0 : 12),
|
padding: EdgeInsetsDirectional.only(end: controller.responsiveUtils.isDesktop(context) ? 0 : 12),
|
||||||
child: Row(
|
child: Row(
|
||||||
|
|||||||
@@ -5,7 +5,6 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:model/model.dart';
|
import 'package:model/model.dart';
|
||||||
import 'package:tmail_ui_user/features/base/state/banner_state.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/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/always_read_receipt/always_read_receipt_view.dart';
|
||||||
import 'package:tmail_ui_user/features/manage_account/presentation/email_rules/email_rules_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(
|
return NavigationBarWidget(
|
||||||
imagePaths: controller.imagePaths,
|
imagePaths: controller.imagePaths,
|
||||||
avatarUserName: controller.sessionCurrent?.username.firstCharacter ?? '',
|
avatarUserName: controller.sessionCurrent?.username.firstCharacter ?? '',
|
||||||
contactSupportCapability: controller.sessionCurrent?.getContactSupportCapability(accountId),
|
|
||||||
onTapApplicationLogoAction: () => controller.backToMailboxDashBoard(context: context),
|
onTapApplicationLogoAction: () => controller.backToMailboxDashBoard(context: context),
|
||||||
onTapAvatarAction: (position) => controller.handleClickAvatarAction(context, position),
|
onTapAvatarAction: (position) => controller.handleClickAvatarAction(context, position),
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -31,12 +31,6 @@ class QuotasView extends GetWidget<QuotasController> {
|
|||||||
color: controller.responsiveUtils.isWebDesktop(context)
|
color: controller.responsiveUtils.isWebDesktop(context)
|
||||||
? QuotasViewStyles.webBackgroundColor
|
? QuotasViewStyles.webBackgroundColor
|
||||||
: QuotasViewStyles.mobileBackgroundColor,
|
: QuotasViewStyles.mobileBackgroundColor,
|
||||||
border: const Border(
|
|
||||||
top: BorderSide(
|
|
||||||
color: QuotasViewStyles.topLineColor,
|
|
||||||
width: QuotasViewStyles.topLineSize,
|
|
||||||
)
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
alignment: AlignmentDirectional.centerStart,
|
alignment: AlignmentDirectional.centerStart,
|
||||||
child: Column(
|
child: Column(
|
||||||
@@ -59,6 +53,8 @@ class QuotasView extends GetWidget<QuotasController> {
|
|||||||
fontWeight: QuotasViewStyles.labelFontWeight,
|
fontWeight: QuotasViewStyles.labelFontWeight,
|
||||||
color: QuotasViewStyles.labelTextColor
|
color: QuotasViewStyles.labelTextColor
|
||||||
),
|
),
|
||||||
|
maxLines: 1,
|
||||||
|
overflow: TextOverflow.ellipsis,
|
||||||
)
|
)
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
@@ -80,6 +76,8 @@ class QuotasView extends GetWidget<QuotasController> {
|
|||||||
fontWeight: QuotasViewStyles.progressStateFontWeight,
|
fontWeight: QuotasViewStyles.progressStateFontWeight,
|
||||||
color: octetQuota.getQuotasStateTitleColor()
|
color: octetQuota.getQuotasStateTitleColor()
|
||||||
),
|
),
|
||||||
|
maxLines: 2,
|
||||||
|
overflow: TextOverflow.ellipsis,
|
||||||
)
|
)
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|||||||
Reference in New Issue
Block a user