TF-46 Compose email from ThreadView
This commit is contained in:
@@ -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:jmap_dart_client/jmap/mail/email/email_filter_condition.dart';
|
||||||
import 'package:model/model.dart';
|
import 'package:model/model.dart';
|
||||||
import 'package:tmail_ui_user/features/base/base_controller.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/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/constants/thread_constants.dart';
|
||||||
import 'package:tmail_ui_user/features/thread/domain/state/get_all_email_state.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({
|
final _properties = Properties({
|
||||||
'id', 'subject', 'from', 'to', 'cc', 'bcc', 'keywords', 'receivedAt',
|
'id', 'subject', 'from', 'to', 'cc', 'bcc', 'keywords', 'receivedAt',
|
||||||
'sentAt', 'preview', 'hasAttachment'
|
'sentAt', 'preview', 'hasAttachment', 'replyTo'
|
||||||
});
|
});
|
||||||
|
|
||||||
final emailList = <PresentationEmail>[].obs;
|
final emailList = <PresentationEmail>[].obs;
|
||||||
@@ -176,4 +177,14 @@ class ThreadController extends BaseController {
|
|||||||
void goToEmail(BuildContext context) {
|
void goToEmail(BuildContext context) {
|
||||||
Get.toNamed(AppRoutes.EMAIL);
|
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!));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -42,6 +42,12 @@ class ThreadView extends GetWidget<ThreadController> {
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
|
floatingActionButton: FloatingActionButton(
|
||||||
|
elevation: 0.0,
|
||||||
|
child: new Icon(Icons.add),
|
||||||
|
backgroundColor: AppColor.appColor,
|
||||||
|
onPressed: () => controller.composeEmailAction()
|
||||||
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -102,20 +102,32 @@ class AppBarThreadWidgetBuilder {
|
|||||||
mainAxisAlignment: MainAxisAlignment.start,
|
mainAxisAlignment: MainAxisAlignment.start,
|
||||||
crossAxisAlignment: CrossAxisAlignment.center,
|
crossAxisAlignment: CrossAxisAlignment.center,
|
||||||
children: [
|
children: [
|
||||||
GestureDetector(
|
(_presentationMailbox != null && _presentationMailbox!.hasRole())
|
||||||
onTap: () => {
|
? GestureDetector(
|
||||||
if (_onOpenListMailboxActionClick != null) {
|
onTap: () => {
|
||||||
_onOpenListMailboxActionClick!()
|
if (_onOpenListMailboxActionClick != null) {
|
||||||
}},
|
_onOpenListMailboxActionClick!()
|
||||||
child: Padding(
|
}},
|
||||||
padding: EdgeInsets.only(left: 16),
|
child: Padding(
|
||||||
child: Text(
|
padding: EdgeInsets.only(left: 16),
|
||||||
'${_presentationMailbox?.name != null ? _presentationMailbox?.name?.name : ''}',
|
child: Text(
|
||||||
maxLines: 1,
|
'${_presentationMailbox?.name != null ? _presentationMailbox?.name?.name : ''}',
|
||||||
overflow: TextOverflow.ellipsis,
|
maxLines: 1,
|
||||||
style: TextStyle(fontSize: 22, color: AppColor.titleAppBarMailboxListMail, fontWeight: FontWeight.w500),
|
overflow: TextOverflow.ellipsis,
|
||||||
))),
|
style: TextStyle(fontSize: 22, color: AppColor.titleAppBarMailboxListMail, fontWeight: FontWeight.w500))))
|
||||||
if(_presentationMailbox != null && _presentationMailbox!.getCountUnReadEmails().isNotEmpty)
|
: 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(
|
Container(
|
||||||
margin: EdgeInsets.only(left: 9),
|
margin: EdgeInsets.only(left: 9),
|
||||||
padding: EdgeInsets.only(left: 8, right: 8, top: 2.5, bottom: 2.5),
|
padding: EdgeInsets.only(left: 8, right: 8, top: 2.5, bottom: 2.5),
|
||||||
|
|||||||
@@ -82,7 +82,7 @@ class EmailTileBuilder {
|
|||||||
Padding(
|
Padding(
|
||||||
padding: EdgeInsets.only(right: 4),
|
padding: EdgeInsets.only(right: 4),
|
||||||
child: Text(
|
child: Text(
|
||||||
'${_presentationEmail.getTimeSentEmail('${Localizations.localeOf(_context).languageCode}_${Localizations.localeOf(_context).countryCode}')}',
|
'${_presentationEmail.getTimeSentEmail(Localizations.localeOf(_context).toLanguageTag())}',
|
||||||
maxLines: 1,
|
maxLines: 1,
|
||||||
overflow:TextOverflow.ellipsis,
|
overflow:TextOverflow.ellipsis,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
|
|||||||
Reference in New Issue
Block a user