TF-80 Create pick destination screen

This commit is contained in:
dab246
2021-09-20 23:26:48 +07:00
committed by Dat H. Pham
parent 2463ce5298
commit c227df8df2
17 changed files with 621 additions and 85 deletions
@@ -11,6 +11,7 @@ import 'package:jmap_dart_client/jmap/mail/email/email.dart';
import 'package:model/model.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:tmail_ui_user/features/base/base_controller.dart';
import 'package:tmail_ui_user/features/destination_picker/presentation/model/destination_picker_arguments.dart';
import 'package:tmail_ui_user/features/email/domain/state/download_attachments_state.dart';
import 'package:tmail_ui_user/features/email/domain/state/export_attachment_state.dart';
import 'package:tmail_ui_user/features/email/domain/state/get_email_content_state.dart';
@@ -230,6 +231,18 @@ class EmailController extends BaseController {
}
}
void openDestinationPickerView(PresentationEmail email) {
final currentMailboxId = mailboxDashBoardController.selectedMailbox.value?.id;
final accountId = mailboxDashBoardController.accountId.value;
if (currentMailboxId != null && accountId != null) {
push(
AppRoutes.DESTINATION_PICKER,
arguments: DestinationPickerArguments(accountId, [email.id], currentMailboxId)
);
}
}
bool canComposeEmail() => mailboxDashBoardController.sessionCurrent != null
&& mailboxDashBoardController.userProfile.value != null
&& mailboxDashBoardController.mapMailboxId.containsKey(PresentationMailbox.roleOutbox)
@@ -50,13 +50,15 @@ class EmailView extends GetWidget {
return Obx(() => Padding(
padding: EdgeInsets.only(left: 6, top: 6, right: 6, bottom: 6),
child: (AppBarMailWidgetBuilder(
context,
imagePaths,
responsiveUtils,
emailController.mailboxDashBoardController.selectedEmail.value)
context,
imagePaths,
responsiveUtils,
emailController.mailboxDashBoardController.selectedEmail.value)
..onBackActionClick(() => emailController.backToThreadView())
..onUnreadEmailActionClick((presentationEmail) =>
emailController.markAsEmailRead(presentationEmail, ReadActions.markAsUnread)))
emailController.markAsEmailRead(presentationEmail, ReadActions.markAsUnread))
..addOnMoveToMailboxActionClick((presentationEmail) =>
emailController.openDestinationPickerView(presentationEmail)))
.build()));
}
@@ -8,10 +8,12 @@ import 'package:tmail_ui_user/main/routes/app_routes.dart';
typedef OnBackActionClick = void Function();
typedef OnUnreadEmailActionClick = void Function(PresentationEmail presentationEmail);
typedef OnMoveToMailboxActionClick = void Function(PresentationEmail presentationEmail);
class AppBarMailWidgetBuilder {
OnBackActionClick? _onBackActionClick;
OnUnreadEmailActionClick? _onUnreadEmailActionClick;
OnMoveToMailboxActionClick? _onMoveToMailboxActionClick;
final BuildContext _context;
final ImagePaths _imagePaths;
@@ -33,6 +35,10 @@ class AppBarMailWidgetBuilder {
_onUnreadEmailActionClick = onUnreadEmailActionClick;
}
void addOnMoveToMailboxActionClick(OnMoveToMailboxActionClick onMoveToMailboxActionClick) {
_onMoveToMailboxActionClick = onMoveToMailboxActionClick;
}
Widget build() {
return Container(
key: Key('app_bar_messenger_widget'),
@@ -88,7 +94,13 @@ class AppBarMailWidgetBuilder {
.key(Key('button_mark_as_flag_email'))
.build(),
SizedBox(width: 10),
ButtonBuilder(_imagePaths.icFolder).key(Key('button_move_to_mailbox_email')).build(),
ButtonBuilder(_imagePaths.icFolder)
.key(Key('button_move_to_mailbox_email'))
.onPressActionClick(() {
if (_onMoveToMailboxActionClick != null && _presentationEmail != null) {
_onMoveToMailboxActionClick!(_presentationEmail!);
}})
.build(),
]
);
}