diff --git a/core/lib/presentation/views/button/tmail_button_widget.dart b/core/lib/presentation/views/button/tmail_button_widget.dart index b6d06720f..85927c923 100644 --- a/core/lib/presentation/views/button/tmail_button_widget.dart +++ b/core/lib/presentation/views/button/tmail_button_widget.dart @@ -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, ); } diff --git a/lib/features/home/domain/extensions/session_extensions.dart b/lib/features/home/domain/extensions/session_extensions.dart index 98e0b88a7..f0bab07f9 100644 --- a/lib/features/home/domain/extensions/session_extensions.dart +++ b/lib/features/home/domain/extensions/session_extensions.dart @@ -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'); diff --git a/lib/features/mailbox/presentation/mailbox_controller.dart b/lib/features/mailbox/presentation/mailbox_controller.dart index f117eae64..8308ccf59 100644 --- a/lib/features/mailbox/presentation/mailbox_controller.dart +++ b/lib/features/mailbox/presentation/mailbox_controller.dart @@ -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); + } } \ No newline at end of file diff --git a/lib/features/mailbox/presentation/mailbox_view.dart b/lib/features/mailbox/presentation/mailbox_view.dart index c0fbf84c4..545604983 100644 --- a/lib/features/mailbox/presentation/mailbox_view.dart +++ b/lib/features/mailbox/presentation/mailbox_view.dart @@ -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( diff --git a/lib/features/mailbox/presentation/mailbox_view_web.dart b/lib/features/mailbox/presentation/mailbox_view_web.dart index 60c54f8b9..c3b36186b 100644 --- a/lib/features/mailbox/presentation/mailbox_view_web.dart +++ b/lib/features/mailbox/presentation/mailbox_view_web.dart @@ -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( diff --git a/lib/features/manage_account/presentation/manage_account_dashboard_view.dart b/lib/features/manage_account/presentation/manage_account_dashboard_view.dart index f1e3e74a1..906c656cc 100644 --- a/lib/features/manage_account/presentation/manage_account_dashboard_view.dart +++ b/lib/features/manage_account/presentation/manage_account_dashboard_view.dart @@ -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 controller.backToMailboxDashBoard(context: context), onTapAvatarAction: (position) => controller.handleClickAvatarAction(context, position), ); diff --git a/lib/features/quotas/presentation/quotas_view.dart b/lib/features/quotas/presentation/quotas_view.dart index ed054d7bf..9320c83c4 100644 --- a/lib/features/quotas/presentation/quotas_view.dart +++ b/lib/features/quotas/presentation/quotas_view.dart @@ -31,12 +31,6 @@ class QuotasView extends GetWidget { 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 { fontWeight: QuotasViewStyles.labelFontWeight, color: QuotasViewStyles.labelTextColor ), + maxLines: 1, + overflow: TextOverflow.ellipsis, ) ], ), @@ -80,6 +76,8 @@ class QuotasView extends GetWidget { fontWeight: QuotasViewStyles.progressStateFontWeight, color: octetQuota.getQuotasStateTitleColor() ), + maxLines: 2, + overflow: TextOverflow.ellipsis, ) ], ),