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) {
if (actions == MailboxActions.move) {
return InkWell(
onTap: () => controller.selectMailboxAction(null),
onTap: () => controller.selectMailboxAction(PresentationMailbox.unifiedMailbox),
child: ClipRRect(
borderRadius: const BorderRadius.all(Radius.circular(14)),
child: Container(
color: Colors.white,
margin: const EdgeInsets.only(left: BuildUtils.isWeb ? 8 : 0),
padding: const EdgeInsets.only(left: 16, top: 16),
child: Row(children: [
SvgPicture.asset(
@@ -374,7 +375,7 @@ class DestinationPickerView extends GetWidget<DestinationPickerController>
data: const MediaQueryData(padding: EdgeInsets.zero),
child: ListTile(
contentPadding: EdgeInsets.zero,
onTap: () => controller.selectMailboxAction(null),
onTap: () => controller.selectMailboxAction(PresentationMailbox.unifiedMailbox),
leading: Padding(
padding: const EdgeInsets.only(left: 16),
child: SvgPicture.asset(_imagePaths.icFolderMailbox,
@@ -698,14 +698,18 @@ class MailboxController extends BaseMailboxController {
MailboxActions.move,
mailboxIdSelected: mailboxSelected.id));
_handleMovingMailbox(
accountId,
MoveAction.moving,
mailboxSelected,
destinationMailbox: destinationMailbox);
}
if (destinationMailbox is PresentationMailbox) {
final mailboxDestination = destinationMailbox == PresentationMailbox.unifiedMailbox
? null : destinationMailbox;
_handleMovingMailbox(
accountId,
MoveAction.moving,
mailboxSelected,
destinationMailbox: mailboxDestination);
_cancelSelectMailbox();
_cancelSelectMailbox();
}
}
}
void _handleMovingMailbox(
@@ -46,7 +46,11 @@ class BottomBarSelectionMailboxWidget {
..paddingIcon(const EdgeInsets.all(8))
..textStyle(TextStyle(fontSize: 12, color: 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))
.build()),
Expanded(child: (ButtonBuilder(_imagePaths.icRenameMailbox)
@@ -116,6 +120,9 @@ class BottomBarSelectionMailboxWidget {
bool get _isMarkAsReadMailboxValid => _listSelectionMailbox.length == 1
&& _listSelectionMailbox.first.getCountUnReadEmails().isNotEmpty;
bool get _isMoveMailboxValid => _listSelectionMailbox.length == 1
&& _isAllFolderMailbox;
bool get _isAllFolderMailbox =>
_listSelectionMailbox.every((mailbox) => !mailbox.hasRole());
}
@@ -1,10 +1,13 @@
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_rights.dart';
import 'package:model/mailbox/select_mode.dart';
class PresentationMailbox with EquatableMixin {
static final PresentationMailbox unifiedMailbox = PresentationMailbox(MailboxId(Id('unified')));
static final roleInbox = Role('inbox');
static final roleTrash = Role('trash');
static final roleSent = Role('sent');