From 5d5c2a35497ca3f1f409a31629a01c1def5b965a Mon Sep 17 00:00:00 2001 From: dab246 Date: Mon, 30 Aug 2021 15:59:39 +0700 Subject: [PATCH] TF-46 Compose email from ThreadView --- .../presentation/thread_controller.dart | 13 +++++- .../thread/presentation/thread_view.dart | 6 +++ .../app_bar_thread_widget_builder.dart | 40 ++++++++++++------- .../widgets/email_tile_builder.dart | 2 +- 4 files changed, 45 insertions(+), 16 deletions(-) diff --git a/lib/features/thread/presentation/thread_controller.dart b/lib/features/thread/presentation/thread_controller.dart index 6b4ab39af..cead585dd 100644 --- a/lib/features/thread/presentation/thread_controller.dart +++ b/lib/features/thread/presentation/thread_controller.dart @@ -13,6 +13,7 @@ import 'package:jmap_dart_client/jmap/mail/email/email_comparator_property.dart' import 'package:jmap_dart_client/jmap/mail/email/email_filter_condition.dart'; import 'package:model/model.dart'; import 'package:tmail_ui_user/features/base/base_controller.dart'; +import 'package:tmail_ui_user/features/email/presentation/model/composer_arguments.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/mailbox_dashboard_controller.dart'; import 'package:tmail_ui_user/features/thread/domain/constants/thread_constants.dart'; import 'package:tmail_ui_user/features/thread/domain/state/get_all_email_state.dart'; @@ -28,7 +29,7 @@ class ThreadController extends BaseController { final _properties = Properties({ 'id', 'subject', 'from', 'to', 'cc', 'bcc', 'keywords', 'receivedAt', - 'sentAt', 'preview', 'hasAttachment' + 'sentAt', 'preview', 'hasAttachment', 'replyTo' }); final emailList = [].obs; @@ -176,4 +177,14 @@ class ThreadController extends BaseController { void goToEmail(BuildContext context) { Get.toNamed(AppRoutes.EMAIL); } + + void composeEmailAction() { + if (mailboxDashBoardController.sessionCurrent != null && mailboxDashBoardController.userProfile.value != null) { + Get.toNamed( + AppRoutes.COMPOSER, + arguments: ComposerArguments( + session: mailboxDashBoardController.sessionCurrent!, + userProfile: mailboxDashBoardController.userProfile.value!)); + } + } } \ No newline at end of file diff --git a/lib/features/thread/presentation/thread_view.dart b/lib/features/thread/presentation/thread_view.dart index 64751bb72..d93488c58 100644 --- a/lib/features/thread/presentation/thread_view.dart +++ b/lib/features/thread/presentation/thread_view.dart @@ -42,6 +42,12 @@ class ThreadView extends GetWidget { ) ) ), + floatingActionButton: FloatingActionButton( + elevation: 0.0, + child: new Icon(Icons.add), + backgroundColor: AppColor.appColor, + onPressed: () => controller.composeEmailAction() + ) ); } diff --git a/lib/features/thread/presentation/widgets/app_bar_thread_widget_builder.dart b/lib/features/thread/presentation/widgets/app_bar_thread_widget_builder.dart index 01ef6f45b..08d909087 100644 --- a/lib/features/thread/presentation/widgets/app_bar_thread_widget_builder.dart +++ b/lib/features/thread/presentation/widgets/app_bar_thread_widget_builder.dart @@ -102,20 +102,32 @@ class AppBarThreadWidgetBuilder { mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.center, children: [ - GestureDetector( - onTap: () => { - if (_onOpenListMailboxActionClick != null) { - _onOpenListMailboxActionClick!() - }}, - child: Padding( - padding: EdgeInsets.only(left: 16), - child: Text( - '${_presentationMailbox?.name != null ? _presentationMailbox?.name?.name : ''}', - maxLines: 1, - overflow: TextOverflow.ellipsis, - style: TextStyle(fontSize: 22, color: AppColor.titleAppBarMailboxListMail, fontWeight: FontWeight.w500), - ))), - if(_presentationMailbox != null && _presentationMailbox!.getCountUnReadEmails().isNotEmpty) + (_presentationMailbox != null && _presentationMailbox!.hasRole()) + ? GestureDetector( + onTap: () => { + if (_onOpenListMailboxActionClick != null) { + _onOpenListMailboxActionClick!() + }}, + child: Padding( + padding: EdgeInsets.only(left: 16), + child: Text( + '${_presentationMailbox?.name != null ? _presentationMailbox?.name?.name : ''}', + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: TextStyle(fontSize: 22, color: AppColor.titleAppBarMailboxListMail, fontWeight: FontWeight.w500)))) + : Expanded(child: GestureDetector( + onTap: () => { + if (_onOpenListMailboxActionClick != null) { + _onOpenListMailboxActionClick!() + }}, + child: Padding( + padding: EdgeInsets.only(left: 16), + child: Text( + '${_presentationMailbox?.name != null ? _presentationMailbox?.name?.name : ''}', + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: TextStyle(fontSize: 22, color: AppColor.titleAppBarMailboxListMail, fontWeight: FontWeight.w500))))), + if(_presentationMailbox != null && _presentationMailbox!.hasRole() && _presentationMailbox!.getCountUnReadEmails().isNotEmpty) Container( margin: EdgeInsets.only(left: 9), padding: EdgeInsets.only(left: 8, right: 8, top: 2.5, bottom: 2.5), diff --git a/lib/features/thread/presentation/widgets/email_tile_builder.dart b/lib/features/thread/presentation/widgets/email_tile_builder.dart index 6e6aa0227..a916b355d 100644 --- a/lib/features/thread/presentation/widgets/email_tile_builder.dart +++ b/lib/features/thread/presentation/widgets/email_tile_builder.dart @@ -82,7 +82,7 @@ class EmailTileBuilder { Padding( padding: EdgeInsets.only(right: 4), child: Text( - '${_presentationEmail.getTimeSentEmail('${Localizations.localeOf(_context).languageCode}_${Localizations.localeOf(_context).countryCode}')}', + '${_presentationEmail.getTimeSentEmail(Localizations.localeOf(_context).toLanguageTag())}', maxLines: 1, overflow:TextOverflow.ellipsis, style: TextStyle(