TF-80 Create pick destination screen
This commit is contained in:
@@ -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(),
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user