TF-551 Fix moving mailbox to mailbox

This commit is contained in:
dab246
2022-06-21 12:50:06 +07:00
committed by Dat H. Pham
parent 9cc09b5b71
commit 2eb0b3e7bb
4 changed files with 25 additions and 10 deletions
@@ -334,11 +334,12 @@ class DestinationPickerView extends GetWidget<DestinationPickerController>
Widget _buildUnifiedMailbox(BuildContext context, MailboxActions? actions) { Widget _buildUnifiedMailbox(BuildContext context, MailboxActions? actions) {
if (actions == MailboxActions.move) { if (actions == MailboxActions.move) {
return InkWell( return InkWell(
onTap: () => controller.selectMailboxAction(null), onTap: () => controller.selectMailboxAction(PresentationMailbox.unifiedMailbox),
child: ClipRRect( child: ClipRRect(
borderRadius: const BorderRadius.all(Radius.circular(14)), borderRadius: const BorderRadius.all(Radius.circular(14)),
child: Container( child: Container(
color: Colors.white, color: Colors.white,
margin: const EdgeInsets.only(left: BuildUtils.isWeb ? 8 : 0),
padding: const EdgeInsets.only(left: 16, top: 16), padding: const EdgeInsets.only(left: 16, top: 16),
child: Row(children: [ child: Row(children: [
SvgPicture.asset( SvgPicture.asset(
@@ -374,7 +375,7 @@ class DestinationPickerView extends GetWidget<DestinationPickerController>
data: const MediaQueryData(padding: EdgeInsets.zero), data: const MediaQueryData(padding: EdgeInsets.zero),
child: ListTile( child: ListTile(
contentPadding: EdgeInsets.zero, contentPadding: EdgeInsets.zero,
onTap: () => controller.selectMailboxAction(null), onTap: () => controller.selectMailboxAction(PresentationMailbox.unifiedMailbox),
leading: Padding( leading: Padding(
padding: const EdgeInsets.only(left: 16), padding: const EdgeInsets.only(left: 16),
child: SvgPicture.asset(_imagePaths.icFolderMailbox, child: SvgPicture.asset(_imagePaths.icFolderMailbox,
@@ -698,14 +698,18 @@ class MailboxController extends BaseMailboxController {
MailboxActions.move, MailboxActions.move,
mailboxIdSelected: mailboxSelected.id)); mailboxIdSelected: mailboxSelected.id));
_handleMovingMailbox( if (destinationMailbox is PresentationMailbox) {
accountId, final mailboxDestination = destinationMailbox == PresentationMailbox.unifiedMailbox
MoveAction.moving, ? null : destinationMailbox;
mailboxSelected, _handleMovingMailbox(
destinationMailbox: destinationMailbox); accountId,
} MoveAction.moving,
mailboxSelected,
destinationMailbox: mailboxDestination);
_cancelSelectMailbox(); _cancelSelectMailbox();
}
}
} }
void _handleMovingMailbox( void _handleMovingMailbox(
@@ -46,7 +46,11 @@ class BottomBarSelectionMailboxWidget {
..paddingIcon(const EdgeInsets.all(8)) ..paddingIcon(const EdgeInsets.all(8))
..textStyle(TextStyle(fontSize: 12, color: AppColor.colorTextButton.withOpacity(0.3))) ..textStyle(TextStyle(fontSize: 12, color: AppColor.colorTextButton.withOpacity(0.3)))
..iconColor(AppColor.colorTextButton.withOpacity(0.3)) ..iconColor(AppColor.colorTextButton.withOpacity(0.3))
..onPressActionClick(() => {}) ..onPressActionClick(() {
if (_isMoveMailboxValid) {
_onMailboxActionsClick?.call(MailboxActions.move, _listSelectionMailbox);
}
})
..text(AppLocalizations.of(_context).move, isVertical: true)) ..text(AppLocalizations.of(_context).move, isVertical: true))
.build()), .build()),
Expanded(child: (ButtonBuilder(_imagePaths.icRenameMailbox) Expanded(child: (ButtonBuilder(_imagePaths.icRenameMailbox)
@@ -116,6 +120,9 @@ class BottomBarSelectionMailboxWidget {
bool get _isMarkAsReadMailboxValid => _listSelectionMailbox.length == 1 bool get _isMarkAsReadMailboxValid => _listSelectionMailbox.length == 1
&& _listSelectionMailbox.first.getCountUnReadEmails().isNotEmpty; && _listSelectionMailbox.first.getCountUnReadEmails().isNotEmpty;
bool get _isMoveMailboxValid => _listSelectionMailbox.length == 1
&& _isAllFolderMailbox;
bool get _isAllFolderMailbox => bool get _isAllFolderMailbox =>
_listSelectionMailbox.every((mailbox) => !mailbox.hasRole()); _listSelectionMailbox.every((mailbox) => !mailbox.hasRole());
} }
@@ -1,10 +1,13 @@
import 'package:equatable/equatable.dart'; import 'package:equatable/equatable.dart';
import 'package:jmap_dart_client/jmap/core/id.dart';
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart'; import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox_rights.dart'; import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox_rights.dart';
import 'package:model/mailbox/select_mode.dart'; import 'package:model/mailbox/select_mode.dart';
class PresentationMailbox with EquatableMixin { class PresentationMailbox with EquatableMixin {
static final PresentationMailbox unifiedMailbox = PresentationMailbox(MailboxId(Id('unified')));
static final roleInbox = Role('inbox'); static final roleInbox = Role('inbox');
static final roleTrash = Role('trash'); static final roleTrash = Role('trash');
static final roleSent = Role('sent'); static final roleSent = Role('sent');