TF-1074 Handle go to path /destination_picker
This commit is contained in:
@@ -7,12 +7,14 @@ import 'package:jmap_dart_client/jmap/core/capability/capability_identifier.dart
|
||||
import 'package:jmap_dart_client/jmap/core/session/session.dart';
|
||||
import 'package:tmail_ui_user/features/base/mixin/message_dialog_action_mixin.dart';
|
||||
import 'package:tmail_ui_user/features/base/mixin/popup_context_menu_action_mixin.dart';
|
||||
import 'package:tmail_ui_user/features/base/mixin/view_as_dialog_action_mixin.dart';
|
||||
import 'package:tmail_ui_user/features/email/presentation/mdn_interactor_bindings.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/bindings/contact_autocomplete_bindings.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/bindings/tmail_autocomplete_bindings.dart';
|
||||
import 'package:tmail_ui_user/main/error/capability_validator.dart';
|
||||
|
||||
abstract class BaseController extends GetxController with MessageDialogActionMixin, PopupContextMenuActionMixin {
|
||||
abstract class BaseController extends GetxController
|
||||
with MessageDialogActionMixin, PopupContextMenuActionMixin, ViewAsDialogActionMixin {
|
||||
final viewState = Rx<Either<Failure, Success>>(Right(UIState.idle));
|
||||
FpsCallback? fpsCallback;
|
||||
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:model/mailbox/presentation_mailbox.dart';
|
||||
import 'package:tmail_ui_user/features/destination_picker/presentation/destination_picker_bindings.dart';
|
||||
import 'package:tmail_ui_user/features/destination_picker/presentation/destination_picker_view.dart';
|
||||
import 'package:tmail_ui_user/features/destination_picker/presentation/model/destination_picker_arguments.dart';
|
||||
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
||||
|
||||
mixin ViewAsDialogActionMixin {
|
||||
|
||||
void showDialogDestinationPicker({
|
||||
required BuildContext context,
|
||||
required DestinationPickerArguments arguments,
|
||||
required Function(PresentationMailbox) onSelectedMailbox
|
||||
}) {
|
||||
DestinationPickerBindings().dependencies();
|
||||
|
||||
showGeneralDialog(
|
||||
context: context,
|
||||
barrierDismissible: true,
|
||||
barrierLabel: '',
|
||||
barrierColor: Colors.black54,
|
||||
pageBuilder: (context, animation, secondaryAnimation) {
|
||||
return DestinationPickerView.fromArguments(
|
||||
arguments,
|
||||
onDismissCallback: () {
|
||||
DestinationPickerBindings().dispose();
|
||||
popBack();
|
||||
},
|
||||
onSelectedMailboxCallback: (destinationMailbox) {
|
||||
DestinationPickerBindings().dispose();
|
||||
popBack();
|
||||
|
||||
if (destinationMailbox is PresentationMailbox) {
|
||||
onSelectedMailbox.call(destinationMailbox);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -83,4 +83,8 @@ class DestinationPickerBindings extends BaseBindings {
|
||||
Get.find<StateDataSource>(),
|
||||
));
|
||||
}
|
||||
|
||||
void dispose() {
|
||||
Get.delete<DestinationPickerController>();
|
||||
}
|
||||
}
|
||||
@@ -20,6 +20,8 @@ import 'package:tmail_ui_user/features/thread/presentation/model/search_state.da
|
||||
import 'package:tmail_ui_user/features/thread/presentation/model/search_status.dart';
|
||||
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
||||
|
||||
typedef OnSelectedMailboxCallback = Function(PresentationMailbox? destinationMailbox);
|
||||
|
||||
class DestinationPickerController extends BaseMailboxController {
|
||||
|
||||
final GetAllMailboxInteractor _getAllMailboxInteractor;
|
||||
@@ -31,8 +33,12 @@ class DestinationPickerController extends BaseMailboxController {
|
||||
final searchQuery = SearchQuery.initial().obs;
|
||||
final mailboxCategoriesExpandMode = MailboxCategoriesExpandMode.initial().obs;
|
||||
|
||||
DestinationPickerArguments? arguments;
|
||||
AccountId? accountId;
|
||||
MailboxId? mailboxIdSelected;
|
||||
OnSelectedMailboxCallback? onSelectedMailboxCallback;
|
||||
VoidCallback? onDismissDestinationPicker;
|
||||
|
||||
final searchInputController = TextEditingController();
|
||||
final searchFocus = FocusNode();
|
||||
|
||||
@@ -45,11 +51,10 @@ class DestinationPickerController extends BaseMailboxController {
|
||||
@override
|
||||
void onReady() {
|
||||
super.onReady();
|
||||
final arguments = Get.arguments;
|
||||
if (arguments != null && arguments is DestinationPickerArguments) {
|
||||
mailboxAction.value = arguments.mailboxAction;
|
||||
mailboxIdSelected = arguments.mailboxIdSelected;
|
||||
accountId = arguments.accountId;
|
||||
if (arguments != null) {
|
||||
mailboxAction.value = arguments!.mailboxAction;
|
||||
mailboxIdSelected = arguments!.mailboxIdSelected;
|
||||
accountId = arguments!.accountId;
|
||||
getAllMailboxAction();
|
||||
}
|
||||
}
|
||||
@@ -160,10 +165,18 @@ class DestinationPickerController extends BaseMailboxController {
|
||||
}
|
||||
|
||||
void selectMailboxAction(PresentationMailbox? destinationMailbox) {
|
||||
popBack(result: destinationMailbox);
|
||||
if (BuildUtils.isWeb) {
|
||||
onSelectedMailboxCallback?.call(destinationMailbox);
|
||||
} else {
|
||||
popBack(result: destinationMailbox);
|
||||
}
|
||||
}
|
||||
|
||||
void closeDestinationPicker() {
|
||||
popBack();
|
||||
if (BuildUtils.isWeb) {
|
||||
onDismissDestinationPicker?.call();
|
||||
} else {
|
||||
popBack();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,19 @@
|
||||
import 'package:core/core.dart';
|
||||
import 'package:core/presentation/extensions/color_extension.dart';
|
||||
import 'package:core/presentation/resources/image_paths.dart';
|
||||
import 'package:core/presentation/state/success.dart';
|
||||
import 'package:core/presentation/utils/responsive_utils.dart';
|
||||
import 'package:core/presentation/utils/style_utils.dart';
|
||||
import 'package:core/presentation/views/button/icon_button_web.dart';
|
||||
import 'package:core/presentation/views/list/tree_view.dart';
|
||||
import 'package:core/presentation/views/search/search_bar_view.dart';
|
||||
import 'package:core/utils/build_utils.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
|
||||
import 'package:model/model.dart';
|
||||
import 'package:model/extensions/presentation_mailbox_extension.dart';
|
||||
import 'package:model/mailbox/expand_mode.dart';
|
||||
import 'package:model/mailbox/presentation_mailbox.dart';
|
||||
import 'package:pointer_interceptor/pointer_interceptor.dart';
|
||||
import 'package:tmail_ui_user/features/base/mixin/app_loader_mixin.dart';
|
||||
import 'package:tmail_ui_user/features/destination_picker/presentation/destination_picker_controller.dart';
|
||||
@@ -25,17 +35,29 @@ class DestinationPickerView extends GetWidget<DestinationPickerController>
|
||||
final _imagePaths = Get.find<ImagePaths>();
|
||||
final _responsiveUtils = Get.find<ResponsiveUtils>();
|
||||
|
||||
DestinationPickerView({Key? key}) : super(key: key);
|
||||
@override
|
||||
final controller = Get.find<DestinationPickerController>();
|
||||
|
||||
DestinationPickerView({Key? key}) : super(key: key) {
|
||||
controller.arguments = Get.arguments;
|
||||
}
|
||||
|
||||
DestinationPickerView.fromArguments(
|
||||
DestinationPickerArguments arguments, {
|
||||
Key? key,
|
||||
OnSelectedMailboxCallback? onSelectedMailboxCallback,
|
||||
VoidCallback? onDismissCallback
|
||||
}) : super(key: key) {
|
||||
controller.arguments = arguments;
|
||||
controller.onSelectedMailboxCallback = onSelectedMailboxCallback;
|
||||
controller.onDismissDestinationPicker = onDismissCallback;
|
||||
controller.onInit();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
MailboxActions? actions;
|
||||
MailboxId? mailboxIdSelected;
|
||||
final arguments = Get.arguments;
|
||||
if (arguments != null && arguments is DestinationPickerArguments) {
|
||||
actions = arguments.mailboxAction;
|
||||
mailboxIdSelected = arguments.mailboxIdSelected;
|
||||
}
|
||||
MailboxActions? actions = controller.arguments?.mailboxAction;
|
||||
MailboxId? mailboxIdSelected = controller.arguments?.mailboxIdSelected;
|
||||
|
||||
return PointerInterceptor(
|
||||
child: GestureDetector(
|
||||
|
||||
@@ -501,10 +501,23 @@ class EmailController extends BaseController with AppLoaderMixin {
|
||||
final accountId = mailboxDashBoardController.accountId.value;
|
||||
|
||||
if (currentMailbox != null && accountId != null) {
|
||||
final destinationMailbox = await push(
|
||||
AppRoutes.destinationPicker,
|
||||
arguments: DestinationPickerArguments(accountId, MailboxActions.moveEmail)
|
||||
);
|
||||
final arguments = DestinationPickerArguments(accountId, MailboxActions.moveEmail);
|
||||
if (BuildUtils.isWeb) {
|
||||
showDialogDestinationPicker(
|
||||
context: context,
|
||||
arguments: arguments,
|
||||
onSelectedMailbox: (destinationMailbox) {
|
||||
_dispatchMoveToAction(
|
||||
context,
|
||||
accountId,
|
||||
email,
|
||||
currentMailbox,
|
||||
destinationMailbox);
|
||||
});
|
||||
} else {
|
||||
final destinationMailbox = await push(
|
||||
AppRoutes.destinationPicker,
|
||||
arguments: arguments);
|
||||
|
||||
if (destinationMailbox != null && destinationMailbox is PresentationMailbox && mailboxDashBoardController.sessionCurrent != null) {
|
||||
if (destinationMailbox.isTrash) {
|
||||
@@ -531,6 +544,47 @@ class EmailController extends BaseController with AppLoaderMixin {
|
||||
destinationPath: destinationMailbox.mailboxPath));
|
||||
}
|
||||
}
|
||||
if (destinationMailbox is PresentationMailbox) {
|
||||
_dispatchMoveToAction(
|
||||
context,
|
||||
accountId,
|
||||
email,
|
||||
currentMailbox,
|
||||
destinationMailbox);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void _dispatchMoveToAction(
|
||||
BuildContext context,
|
||||
AccountId accountId,
|
||||
PresentationEmail emailSelected,
|
||||
PresentationMailbox currentMailbox,
|
||||
PresentationMailbox destinationMailbox
|
||||
) {
|
||||
if (destinationMailbox.isTrash) {
|
||||
_moveToTrashAction(context, accountId, MoveToMailboxRequest(
|
||||
[emailSelected.id],
|
||||
currentMailbox.id,
|
||||
destinationMailbox.id,
|
||||
MoveAction.moving,
|
||||
EmailActionType.moveToTrash));
|
||||
} else if (destinationMailbox.isSpam) {
|
||||
_moveToSpamAction(context, accountId, MoveToMailboxRequest(
|
||||
[emailSelected.id],
|
||||
currentMailbox.id,
|
||||
destinationMailbox.id,
|
||||
MoveAction.moving,
|
||||
EmailActionType.moveToSpam));
|
||||
} else {
|
||||
_moveToMailbox(accountId, MoveToMailboxRequest(
|
||||
[emailSelected.id],
|
||||
currentMailbox.id,
|
||||
destinationMailbox.id,
|
||||
MoveAction.moving,
|
||||
EmailActionType.moveToMailbox,
|
||||
destinationPath: destinationMailbox.mailboxPath));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -538,7 +538,7 @@ class MailboxController extends BaseMailboxController {
|
||||
}
|
||||
|
||||
void pressMailboxSelectionAction(
|
||||
BuildContext context,
|
||||
BuildContext context,
|
||||
MailboxActions actions,
|
||||
List<PresentationMailbox> selectedMailboxList
|
||||
) {
|
||||
@@ -553,7 +553,7 @@ class MailboxController extends BaseMailboxController {
|
||||
_markAsReadMailboxAction(context, selectedMailboxList.first);
|
||||
break;
|
||||
case MailboxActions.move:
|
||||
_moveMailboxAction(selectedMailboxList.first);
|
||||
_moveMailboxAction(context, selectedMailboxList.first);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@@ -702,7 +702,7 @@ class MailboxController extends BaseMailboxController {
|
||||
_cancelSelectMailbox();
|
||||
popBack();
|
||||
}
|
||||
|
||||
|
||||
void _switchBackToMailboxDefault() {
|
||||
final inboxMailbox = findMailboxNodeByRole(PresentationMailbox.roleInbox);
|
||||
mailboxDashBoardController.setSelectedMailbox(inboxMailbox?.item);
|
||||
@@ -812,26 +812,41 @@ class MailboxController extends BaseMailboxController {
|
||||
}
|
||||
}
|
||||
|
||||
void _moveMailboxAction(PresentationMailbox mailboxSelected) async {
|
||||
void _moveMailboxAction(BuildContext context, PresentationMailbox mailboxSelected) async {
|
||||
final accountId = mailboxDashBoardController.accountId.value;
|
||||
if (accountId != null) {
|
||||
final destinationMailbox = await push(
|
||||
AppRoutes.destinationPicker,
|
||||
arguments: DestinationPickerArguments(
|
||||
final arguments = DestinationPickerArguments(
|
||||
accountId,
|
||||
MailboxActions.move,
|
||||
mailboxIdSelected: mailboxSelected.id);
|
||||
|
||||
if (BuildUtils.isWeb) {
|
||||
showDialogDestinationPicker(
|
||||
context: context,
|
||||
arguments: arguments,
|
||||
onSelectedMailbox: (destinationMailbox) {
|
||||
_handleMovingMailbox(
|
||||
accountId,
|
||||
MoveAction.moving,
|
||||
mailboxSelected,
|
||||
destinationMailbox: destinationMailbox == PresentationMailbox.unifiedMailbox ? null : destinationMailbox);
|
||||
|
||||
_cancelSelectMailbox();
|
||||
});
|
||||
} else {
|
||||
final destinationMailbox = await push(
|
||||
AppRoutes.destinationPicker,
|
||||
arguments: arguments);
|
||||
|
||||
if (destinationMailbox is PresentationMailbox) {
|
||||
_handleMovingMailbox(
|
||||
accountId,
|
||||
MailboxActions.move,
|
||||
mailboxIdSelected: mailboxSelected.id));
|
||||
MoveAction.moving,
|
||||
mailboxSelected,
|
||||
destinationMailbox: destinationMailbox == PresentationMailbox.unifiedMailbox ? null : destinationMailbox);
|
||||
|
||||
if (destinationMailbox is PresentationMailbox) {
|
||||
final mailboxDestination = destinationMailbox == PresentationMailbox.unifiedMailbox
|
||||
? null : destinationMailbox;
|
||||
_handleMovingMailbox(
|
||||
accountId,
|
||||
MoveAction.moving,
|
||||
mailboxSelected,
|
||||
destinationMailbox: mailboxDestination);
|
||||
|
||||
_cancelSelectMailbox();
|
||||
_cancelSelectMailbox();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -944,7 +959,7 @@ class MailboxController extends BaseMailboxController {
|
||||
}
|
||||
|
||||
void handleMailboxAction(
|
||||
BuildContext context,
|
||||
BuildContext context,
|
||||
MailboxActions actions,
|
||||
PresentationMailbox mailbox
|
||||
) {
|
||||
@@ -958,7 +973,7 @@ class MailboxController extends BaseMailboxController {
|
||||
_openDialogRenameMailboxAction(context, mailbox);
|
||||
break;
|
||||
case MailboxActions.move:
|
||||
_moveMailboxAction(mailbox);
|
||||
_moveMailboxAction(context, mailbox);
|
||||
break;
|
||||
case MailboxActions.markAsRead:
|
||||
_markAsReadMailboxAction(context, mailbox);
|
||||
|
||||
@@ -142,21 +142,36 @@ class MailboxCreatorController extends BaseController {
|
||||
FocusScope.of(context).unfocus();
|
||||
|
||||
if (accountId != null) {
|
||||
final destinationMailbox = await push(
|
||||
AppRoutes.destinationPicker,
|
||||
arguments: DestinationPickerArguments(
|
||||
accountId!,
|
||||
MailboxActions.create,
|
||||
mailboxIdSelected: selectedMailbox.value?.id)
|
||||
);
|
||||
final arguments = DestinationPickerArguments(
|
||||
accountId!,
|
||||
MailboxActions.create,
|
||||
mailboxIdSelected: selectedMailbox.value?.id);
|
||||
|
||||
if (destinationMailbox is PresentationMailbox) {
|
||||
final mailboxDestination = destinationMailbox == PresentationMailbox.unifiedMailbox
|
||||
? null
|
||||
: destinationMailbox;
|
||||
if (BuildUtils.isWeb) {
|
||||
showDialogDestinationPicker(
|
||||
context: context,
|
||||
arguments: arguments,
|
||||
onSelectedMailbox: (destinationMailbox) {
|
||||
final mailboxDestination = destinationMailbox == PresentationMailbox.unifiedMailbox
|
||||
? null
|
||||
: destinationMailbox;
|
||||
|
||||
selectedMailbox.value = mailboxDestination;
|
||||
_createListMailboxNameAsStringInMailboxLocation();
|
||||
selectedMailbox.value = mailboxDestination;
|
||||
_createListMailboxNameAsStringInMailboxLocation();
|
||||
});
|
||||
} else {
|
||||
final destinationMailbox = await push(
|
||||
AppRoutes.destinationPicker,
|
||||
arguments: arguments);
|
||||
|
||||
if (destinationMailbox is PresentationMailbox) {
|
||||
final mailboxDestination = destinationMailbox == PresentationMailbox.unifiedMailbox
|
||||
? null
|
||||
: destinationMailbox;
|
||||
|
||||
selectedMailbox.value = mailboxDestination;
|
||||
_createListMailboxNameAsStringInMailboxLocation();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+27
-11
@@ -134,18 +134,34 @@ class AdvancedFilterController extends BaseController {
|
||||
);
|
||||
}
|
||||
|
||||
void selectedMailBox() async {
|
||||
final destinationMailbox = await push(
|
||||
AppRoutes.destinationPicker,
|
||||
arguments: DestinationPickerArguments(
|
||||
_mailboxDashBoardController.accountId.value!,
|
||||
MailboxActions.select,
|
||||
mailboxIdSelected: searchController.searchEmailFilter.value.mailbox?.id));
|
||||
void selectedMailBox(BuildContext context) async {
|
||||
final accountId = _mailboxDashBoardController.accountId.value;
|
||||
if (accountId != null) {
|
||||
final arguments = DestinationPickerArguments(
|
||||
accountId,
|
||||
MailboxActions.select,
|
||||
mailboxIdSelected: searchController.searchEmailFilter.value.mailbox?.id);
|
||||
|
||||
if (destinationMailbox is PresentationMailbox) {
|
||||
searchController.updateFilterEmail(mailbox: destinationMailbox);
|
||||
mailBoxFilterInputController.text =
|
||||
StringConvert.writeNullToEmpty(destinationMailbox.name?.name);
|
||||
if (BuildUtils.isWeb) {
|
||||
showDialogDestinationPicker(
|
||||
context: context,
|
||||
arguments: arguments,
|
||||
onSelectedMailbox: (destinationMailbox) {
|
||||
searchController.updateFilterEmail(mailbox: destinationMailbox);
|
||||
mailBoxFilterInputController.text =
|
||||
StringConvert.writeNullToEmpty(destinationMailbox.name?.name);
|
||||
});
|
||||
} else {
|
||||
final destinationMailbox = await push(
|
||||
AppRoutes.destinationPicker,
|
||||
arguments: arguments);
|
||||
|
||||
if (destinationMailbox is PresentationMailbox) {
|
||||
searchController.updateFilterEmail(mailbox: destinationMailbox);
|
||||
mailBoxFilterInputController.text =
|
||||
StringConvert.writeNullToEmpty(destinationMailbox.name?.name);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+56
-4
@@ -611,13 +611,27 @@ class MailboxDashBoardController extends ReloadableController {
|
||||
}
|
||||
|
||||
void moveSelectedMultipleEmailToMailbox(
|
||||
BuildContext context,
|
||||
List<PresentationEmail> listEmails,
|
||||
PresentationMailbox mailboxCurrent
|
||||
PresentationMailbox currentMailbox
|
||||
) async {
|
||||
if (accountId.value != null) {
|
||||
final destinationMailbox = await push(
|
||||
AppRoutes.destinationPicker,
|
||||
arguments: DestinationPickerArguments(accountId.value!, MailboxActions.moveEmail));
|
||||
final arguments = DestinationPickerArguments(accountId.value!, MailboxActions.moveEmail);
|
||||
|
||||
if (BuildUtils.isWeb) {
|
||||
showDialogDestinationPicker(
|
||||
context: context,
|
||||
arguments: arguments,
|
||||
onSelectedMailbox: (destinationMailbox) {
|
||||
_dispatchMoveToMultipleAction(
|
||||
accountId.value!,
|
||||
listEmails.listEmailIds,
|
||||
currentMailbox, destinationMailbox);
|
||||
});
|
||||
} else {
|
||||
final destinationMailbox = await push(
|
||||
AppRoutes.destinationPicker,
|
||||
arguments: arguments);
|
||||
|
||||
if (destinationMailbox != null && destinationMailbox is PresentationMailbox) {
|
||||
if (destinationMailbox.isTrash) {
|
||||
@@ -644,6 +658,44 @@ class MailboxDashBoardController extends ReloadableController {
|
||||
destinationPath: destinationMailbox.mailboxPath));
|
||||
}
|
||||
}
|
||||
if (destinationMailbox != null && destinationMailbox is PresentationMailbox) {
|
||||
_dispatchMoveToMultipleAction(
|
||||
accountId.value!,
|
||||
listEmails.listEmailIds,
|
||||
currentMailbox, destinationMailbox);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void _dispatchMoveToMultipleAction(
|
||||
AccountId accountId,
|
||||
List<EmailId> listEmailIds,
|
||||
PresentationMailbox currentMailbox,
|
||||
PresentationMailbox destinationMailbox
|
||||
) {
|
||||
if (destinationMailbox.isTrash) {
|
||||
_moveSelectedEmailMultipleToMailboxAction(accountId, MoveToMailboxRequest(
|
||||
listEmailIds,
|
||||
currentMailbox.id,
|
||||
destinationMailbox.id,
|
||||
MoveAction.moving,
|
||||
EmailActionType.moveToTrash));
|
||||
} else if (destinationMailbox.isSpam) {
|
||||
_moveSelectedEmailMultipleToMailboxAction(accountId, MoveToMailboxRequest(
|
||||
listEmailIds,
|
||||
currentMailbox.id,
|
||||
destinationMailbox.id,
|
||||
MoveAction.moving,
|
||||
EmailActionType.moveToSpam));
|
||||
} else {
|
||||
_moveSelectedEmailMultipleToMailboxAction(accountId, MoveToMailboxRequest(
|
||||
listEmailIds,
|
||||
currentMailbox.id,
|
||||
destinationMailbox.id,
|
||||
MoveAction.moving,
|
||||
EmailActionType.moveToMailbox,
|
||||
destinationPath: destinationMailbox.mailboxPath));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -70,7 +70,7 @@ class AdvancedSearchInputForm extends GetWidget<AdvancedFilterController>
|
||||
currentFocusNode: controller.focusManager.mailboxFieldFocusNode,
|
||||
nextFocusNode: controller.focusManager.attachmentCheckboxFocusNode,
|
||||
mouseCursor: SystemMouseCursors.click,
|
||||
onTap: () => controller.selectedMailBox()),
|
||||
onTap: () => controller.selectedMailBox(context)),
|
||||
Row(children: [
|
||||
Expanded(child: _buildFilterField(
|
||||
textEditingController: controller.dateFilterInputController,
|
||||
|
||||
+26
-10
@@ -192,17 +192,33 @@ class RulesFilterCreatorController extends BaseMailboxController {
|
||||
}
|
||||
|
||||
void selectMailbox(BuildContext context) async {
|
||||
final destinationMailbox = await push(
|
||||
AppRoutes.destinationPicker,
|
||||
arguments: DestinationPickerArguments(
|
||||
_accountId!,
|
||||
MailboxActions.selectForRuleAction));
|
||||
if (_accountId != null) {
|
||||
final arguments = DestinationPickerArguments(
|
||||
_accountId!,
|
||||
MailboxActions.selectForRuleAction);
|
||||
|
||||
if (destinationMailbox is PresentationMailbox) {
|
||||
mailboxSelected.value = destinationMailbox;
|
||||
errorRuleActionValue.value = _getErrorStringByInputValue(
|
||||
context,
|
||||
mailboxSelected.value?.name?.name);
|
||||
if (BuildUtils.isWeb) {
|
||||
showDialogDestinationPicker(
|
||||
context: context,
|
||||
arguments: arguments,
|
||||
onSelectedMailbox: (destinationMailbox) {
|
||||
mailboxSelected.value = destinationMailbox;
|
||||
errorRuleActionValue.value = _getErrorStringByInputValue(
|
||||
context,
|
||||
mailboxSelected.value?.name?.name);
|
||||
});
|
||||
} else {
|
||||
final destinationMailbox = await push(
|
||||
AppRoutes.destinationPicker,
|
||||
arguments: arguments);
|
||||
|
||||
if (destinationMailbox is PresentationMailbox) {
|
||||
mailboxSelected.value = destinationMailbox;
|
||||
errorRuleActionValue.value = _getErrorStringByInputValue(
|
||||
context,
|
||||
mailboxSelected.value?.name?.name);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
|
||||
import 'package:core/core.dart';
|
||||
import 'package:core/presentation/state/failure.dart';
|
||||
import 'package:core/presentation/state/success.dart';
|
||||
import 'package:core/utils/app_logger.dart';
|
||||
@@ -415,21 +416,33 @@ class SearchEmailController extends BaseController
|
||||
}
|
||||
|
||||
void selectMailboxForSearchFilter(BuildContext context, PresentationMailbox? mailbox) async {
|
||||
final destinationMailbox = await push(
|
||||
AppRoutes.destinationPicker,
|
||||
arguments: DestinationPickerArguments(
|
||||
mailboxDashBoardController.accountId.value!,
|
||||
MailboxActions.select,
|
||||
mailboxIdSelected: mailbox?.id));
|
||||
final arguments = DestinationPickerArguments(
|
||||
mailboxDashBoardController.accountId.value!,
|
||||
MailboxActions.select,
|
||||
mailboxIdSelected: mailbox?.id);
|
||||
|
||||
if (destinationMailbox is PresentationMailbox) {
|
||||
final mailboxSelected = destinationMailbox == PresentationMailbox.unifiedMailbox
|
||||
? null
|
||||
: destinationMailbox;
|
||||
if (mailbox?.id != mailboxSelected?.id) {
|
||||
simpleSearchFilter.value = simpleSearchFilter.value
|
||||
.toSimpleSearchFilterByMailbox(newMailbox: mailboxSelected);
|
||||
_searchEmailAction(context);
|
||||
if (BuildUtils.isWeb) {
|
||||
showDialogDestinationPicker(
|
||||
context: context,
|
||||
arguments: arguments,
|
||||
onSelectedMailbox: (destinationMailbox) {
|
||||
final mailboxSelected = destinationMailbox == PresentationMailbox.unifiedMailbox ? null : destinationMailbox;
|
||||
if (mailbox?.id != mailboxSelected?.id) {
|
||||
simpleSearchFilter.value = simpleSearchFilter.value.toSimpleSearchFilterByMailbox(newMailbox: mailboxSelected);
|
||||
_searchEmailAction(context);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
final destinationMailbox = await push(
|
||||
AppRoutes.destinationPicker,
|
||||
arguments: arguments);
|
||||
|
||||
if (destinationMailbox is PresentationMailbox) {
|
||||
final mailboxSelected = destinationMailbox == PresentationMailbox.unifiedMailbox ? null : destinationMailbox;
|
||||
if (mailbox?.id != mailboxSelected?.id) {
|
||||
simpleSearchFilter.value = simpleSearchFilter.value.toSimpleSearchFilterByMailbox(newMailbox: mailboxSelected);
|
||||
_searchEmailAction(context);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -642,7 +655,7 @@ class SearchEmailController extends BaseController
|
||||
cancelSelectionMode(context);
|
||||
final mailboxContainCurrent = listEmails.getCurrentMailboxContain(mailboxDashBoardController.mapMailboxById);
|
||||
if (mailboxContainCurrent != null) {
|
||||
moveSelectedMultipleEmailToMailbox(listEmails, mailboxContainCurrent);
|
||||
moveSelectedMultipleEmailToMailbox(context, listEmails, mailboxContainCurrent);
|
||||
}
|
||||
break;
|
||||
case EmailActionType.moveToTrash:
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
|
||||
|
||||
import 'package:core/presentation/extensions/color_extension.dart';
|
||||
import 'package:core/presentation/resources/image_paths.dart';
|
||||
import 'package:core/presentation/utils/responsive_utils.dart';
|
||||
import 'package:core/presentation/views/bottom_popup/confirmation_dialog_action_sheet_builder.dart';
|
||||
import 'package:core/presentation/views/dialog/confirmation_dialog_builder.dart';
|
||||
import 'package:core/utils/build_utils.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:get/get.dart';
|
||||
@@ -14,6 +16,7 @@ import 'package:model/email/presentation_email.dart';
|
||||
import 'package:model/email/read_actions.dart';
|
||||
import 'package:model/mailbox/presentation_mailbox.dart';
|
||||
import 'package:pointer_interceptor/pointer_interceptor.dart';
|
||||
import 'package:tmail_ui_user/features/base/mixin/view_as_dialog_action_mixin.dart';
|
||||
import 'package:tmail_ui_user/features/destination_picker/presentation/model/destination_picker_arguments.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/model/move_action.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/model/move_to_mailbox_request.dart';
|
||||
@@ -26,7 +29,7 @@ import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||
import 'package:tmail_ui_user/main/routes/app_routes.dart';
|
||||
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
||||
|
||||
mixin EmailActionController {
|
||||
mixin EmailActionController on ViewAsDialogActionMixin {
|
||||
|
||||
final mailboxDashBoardController = Get.find<MailboxDashBoardController>();
|
||||
final responsiveUtils = Get.find<ResponsiveUtils>();
|
||||
@@ -107,10 +110,24 @@ mixin EmailActionController {
|
||||
final accountId = mailboxDashBoardController.accountId.value;
|
||||
|
||||
if (currentMailbox != null && accountId != null) {
|
||||
final destinationMailbox = await push(
|
||||
AppRoutes.destinationPicker,
|
||||
arguments: DestinationPickerArguments(accountId, MailboxActions.moveEmail)
|
||||
);
|
||||
final arguments = DestinationPickerArguments(accountId, MailboxActions.moveEmail);
|
||||
|
||||
if (BuildUtils.isWeb) {
|
||||
showDialogDestinationPicker(
|
||||
context: context,
|
||||
arguments: arguments,
|
||||
onSelectedMailbox: (destinationMailbox) {
|
||||
_dispatchMoveToAction(
|
||||
context,
|
||||
accountId,
|
||||
email,
|
||||
currentMailbox,
|
||||
destinationMailbox);
|
||||
});
|
||||
} else {
|
||||
final destinationMailbox = await push(
|
||||
AppRoutes.destinationPicker,
|
||||
arguments: arguments);
|
||||
|
||||
if (destinationMailbox != null && destinationMailbox is PresentationMailbox) {
|
||||
if (destinationMailbox.isTrash) {
|
||||
@@ -137,6 +154,45 @@ mixin EmailActionController {
|
||||
destinationPath: destinationMailbox.mailboxPath));
|
||||
}
|
||||
}
|
||||
_dispatchMoveToAction(
|
||||
context,
|
||||
accountId,
|
||||
email,
|
||||
currentMailbox,
|
||||
destinationMailbox);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void _dispatchMoveToAction(
|
||||
BuildContext context,
|
||||
AccountId accountId,
|
||||
PresentationEmail emailSelected,
|
||||
PresentationMailbox currentMailbox,
|
||||
PresentationMailbox destinationMailbox
|
||||
) {
|
||||
if (destinationMailbox.isTrash) {
|
||||
moveToSpamAction(accountId, MoveToMailboxRequest(
|
||||
[emailSelected.id],
|
||||
currentMailbox.id,
|
||||
destinationMailbox.id,
|
||||
MoveAction.moving,
|
||||
EmailActionType.moveToTrash));
|
||||
} else if (destinationMailbox.isSpam) {
|
||||
moveToSpamAction(accountId, MoveToMailboxRequest(
|
||||
[emailSelected.id],
|
||||
currentMailbox.id,
|
||||
destinationMailbox.id,
|
||||
MoveAction.moving,
|
||||
EmailActionType.moveToSpam));
|
||||
} else {
|
||||
_moveToMailboxAction(accountId, MoveToMailboxRequest(
|
||||
[emailSelected.id],
|
||||
currentMailbox.id,
|
||||
destinationMailbox.id,
|
||||
MoveAction.moving,
|
||||
EmailActionType.moveToMailbox,
|
||||
destinationPath: destinationMailbox.mailboxPath));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -200,8 +256,15 @@ mixin EmailActionController {
|
||||
mailboxDashBoardController.markAsStarSelectedMultipleEmail(listEmails, markStarAction);
|
||||
}
|
||||
|
||||
void moveSelectedMultipleEmailToMailbox(List<PresentationEmail> listEmails, PresentationMailbox mailboxCurrent) {
|
||||
mailboxDashBoardController.moveSelectedMultipleEmailToMailbox(listEmails, mailboxCurrent);
|
||||
void moveSelectedMultipleEmailToMailbox(
|
||||
BuildContext context,
|
||||
List<PresentationEmail> listEmails,
|
||||
PresentationMailbox mailboxCurrent
|
||||
) {
|
||||
mailboxDashBoardController.moveSelectedMultipleEmailToMailbox(
|
||||
context,
|
||||
listEmails,
|
||||
mailboxCurrent);
|
||||
}
|
||||
|
||||
void moveSelectedMultipleEmailToTrash(List<PresentationEmail> listEmails, PresentationMailbox mailboxCurrent) {
|
||||
|
||||
@@ -635,15 +635,28 @@ class ThreadController extends BaseController {
|
||||
}
|
||||
|
||||
void moveSelectedMultipleEmailToMailbox(
|
||||
BuildContext context,
|
||||
List<PresentationEmail> listEmail,
|
||||
PresentationMailbox currentMailbox
|
||||
) async {
|
||||
if (_accountId != null) {
|
||||
final listEmailIds = listEmail.map((email) => email.id).toList();
|
||||
final destinationMailbox = await push(
|
||||
AppRoutes.destinationPicker,
|
||||
arguments: DestinationPickerArguments(_accountId!, MailboxActions.moveEmail)
|
||||
);
|
||||
final arguments = DestinationPickerArguments(_accountId!, MailboxActions.moveEmail);
|
||||
|
||||
if (BuildUtils.isWeb) {
|
||||
showDialogDestinationPicker(
|
||||
context: context,
|
||||
arguments: arguments,
|
||||
onSelectedMailbox: (destinationMailbox) {
|
||||
_dispatchMoveToMultipleAction(
|
||||
_accountId!,
|
||||
listEmail.listEmailIds,
|
||||
currentMailbox,
|
||||
destinationMailbox);
|
||||
});
|
||||
} else {
|
||||
final destinationMailbox = await push(
|
||||
AppRoutes.destinationPicker,
|
||||
arguments: arguments);
|
||||
|
||||
if (destinationMailbox != null && destinationMailbox is PresentationMailbox) {
|
||||
if (destinationMailbox.isTrash) {
|
||||
@@ -670,6 +683,45 @@ class ThreadController extends BaseController {
|
||||
destinationPath: destinationMailbox.mailboxPath));
|
||||
}
|
||||
}
|
||||
if (destinationMailbox != null && destinationMailbox is PresentationMailbox) {
|
||||
_dispatchMoveToMultipleAction(
|
||||
_accountId!,
|
||||
listEmail.listEmailIds,
|
||||
currentMailbox,
|
||||
destinationMailbox);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void _dispatchMoveToMultipleAction(
|
||||
AccountId accountId,
|
||||
List<EmailId> listEmailIds,
|
||||
PresentationMailbox currentMailbox,
|
||||
PresentationMailbox destinationMailbox
|
||||
) {
|
||||
if (destinationMailbox.isTrash) {
|
||||
_moveSelectedEmailMultipleToTrashAction(accountId, MoveToMailboxRequest(
|
||||
listEmailIds,
|
||||
currentMailbox.id,
|
||||
destinationMailbox.id,
|
||||
MoveAction.moving,
|
||||
EmailActionType.moveToTrash));
|
||||
} else if (destinationMailbox.isSpam) {
|
||||
_moveSelectedEmailMultipleToSpamAction(accountId, MoveToMailboxRequest(
|
||||
listEmailIds,
|
||||
currentMailbox.id,
|
||||
destinationMailbox.id,
|
||||
MoveAction.moving,
|
||||
EmailActionType.moveToSpam));
|
||||
} else {
|
||||
_moveSelectedEmailMultipleToMailboxAction(accountId, MoveToMailboxRequest(
|
||||
listEmailIds,
|
||||
currentMailbox.id,
|
||||
destinationMailbox.id,
|
||||
MoveAction.moving,
|
||||
EmailActionType.moveToMailbox,
|
||||
destinationPath: destinationMailbox.mailboxPath));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -984,7 +1036,7 @@ class ThreadController extends BaseController {
|
||||
? selectionEmail.getCurrentMailboxContain(mailboxDashBoardController.mapMailboxById)
|
||||
: currentMailbox;
|
||||
if (mailboxContainCurrent != null) {
|
||||
moveSelectedMultipleEmailToMailbox(selectionEmail, mailboxContainCurrent);
|
||||
moveSelectedMultipleEmailToMailbox(context, selectionEmail, mailboxContainCurrent);
|
||||
}
|
||||
break;
|
||||
case EmailActionType.moveToTrash:
|
||||
@@ -1079,10 +1131,24 @@ class ThreadController extends BaseController {
|
||||
final accountId = mailboxDashBoardController.accountId.value;
|
||||
|
||||
if (currentMailbox != null && accountId != null) {
|
||||
final destinationMailbox = await push(
|
||||
AppRoutes.destinationPicker,
|
||||
arguments: DestinationPickerArguments(accountId, MailboxActions.moveEmail)
|
||||
);
|
||||
final arguments = DestinationPickerArguments(accountId, MailboxActions.moveEmail);
|
||||
|
||||
if (BuildUtils.isWeb) {
|
||||
showDialogDestinationPicker(
|
||||
context: context,
|
||||
arguments: arguments,
|
||||
onSelectedMailbox: (destinationMailbox) {
|
||||
_dispatchMoveToAction(
|
||||
context,
|
||||
accountId,
|
||||
email,
|
||||
currentMailbox,
|
||||
destinationMailbox);
|
||||
});
|
||||
} else {
|
||||
final destinationMailbox = await push(
|
||||
AppRoutes.destinationPicker,
|
||||
arguments: arguments);
|
||||
|
||||
if (destinationMailbox != null && destinationMailbox is PresentationMailbox) {
|
||||
if (destinationMailbox.isTrash) {
|
||||
@@ -1109,6 +1175,47 @@ class ThreadController extends BaseController {
|
||||
destinationPath: destinationMailbox.mailboxPath));
|
||||
}
|
||||
}
|
||||
if (destinationMailbox != null && destinationMailbox is PresentationMailbox) {
|
||||
_dispatchMoveToAction(
|
||||
context,
|
||||
accountId,
|
||||
email,
|
||||
currentMailbox,
|
||||
destinationMailbox);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void _dispatchMoveToAction(
|
||||
BuildContext context,
|
||||
AccountId accountId,
|
||||
PresentationEmail emailSelected,
|
||||
PresentationMailbox currentMailbox,
|
||||
PresentationMailbox destinationMailbox
|
||||
) {
|
||||
if (destinationMailbox.isTrash) {
|
||||
_moveToTrashAction(accountId, MoveToMailboxRequest(
|
||||
[emailSelected.id],
|
||||
currentMailbox.id,
|
||||
destinationMailbox.id,
|
||||
MoveAction.moving,
|
||||
EmailActionType.moveToTrash));
|
||||
} else if (destinationMailbox.isSpam) {
|
||||
_moveToSpamAction(accountId, MoveToMailboxRequest(
|
||||
[emailSelected.id],
|
||||
currentMailbox.id,
|
||||
destinationMailbox.id,
|
||||
MoveAction.moving,
|
||||
EmailActionType.moveToSpam));
|
||||
} else {
|
||||
_moveToMailboxAction(accountId, MoveToMailboxRequest(
|
||||
[emailSelected.id],
|
||||
currentMailbox.id,
|
||||
destinationMailbox.id,
|
||||
MoveAction.moving,
|
||||
EmailActionType.moveToMailbox,
|
||||
destinationPath: destinationMailbox.mailboxPath));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -31,70 +31,70 @@ import 'package:tmail_ui_user/main/pages/deferred_widget.dart';
|
||||
import 'package:tmail_ui_user/main/routes/app_routes.dart';
|
||||
|
||||
class AppPages {
|
||||
static final pages = [
|
||||
static final pagesOnlyOnMobile = [
|
||||
GetPage(
|
||||
name: AppRoutes.home,
|
||||
page: () => const HomeView(),
|
||||
binding: HomeBindings()),
|
||||
GetPage(
|
||||
name: AppRoutes.login,
|
||||
page: () => DeferredWidget(login.loadLibrary, () => login.LoginView()),
|
||||
binding: LoginBindings()),
|
||||
GetPage(
|
||||
name: AppRoutes.session,
|
||||
page: () => DeferredWidget(session.loadLibrary, () => session.SessionView()),
|
||||
binding: SessionPageBindings()),
|
||||
GetPage(
|
||||
name: AppRoutes.dashboard,
|
||||
page: () => DeferredWidget(mailbox_dashboard.loadLibrary, () => mailbox_dashboard.MailboxDashBoardView()),
|
||||
binding: MailboxDashBoardBindings()),
|
||||
if (!BuildUtils.isWeb)
|
||||
GetPage(
|
||||
name: AppRoutes.composer,
|
||||
opaque: false,
|
||||
page: () {
|
||||
ComposerBindings().dependencies();
|
||||
return DeferredWidget(composer.loadLibrary, () => composer.ComposerView());
|
||||
}),
|
||||
page: () => DeferredWidget(composer.loadLibrary, () => composer.ComposerView()),
|
||||
binding: ComposerBindings()),
|
||||
GetPage(
|
||||
name: AppRoutes.destinationPicker,
|
||||
opaque: false,
|
||||
page: () => DeferredWidget(destination_picker.loadLibrary, () => destination_picker.DestinationPickerView()),
|
||||
binding: DestinationPickerBindings()),
|
||||
name: AppRoutes.destinationPicker,
|
||||
opaque: false,
|
||||
page: () => DeferredWidget(destination_picker.loadLibrary, () => destination_picker.DestinationPickerView()),
|
||||
binding: DestinationPickerBindings()),
|
||||
];
|
||||
|
||||
static final pages = [
|
||||
GetPage(
|
||||
name: AppRoutes.mailboxCreator,
|
||||
opaque: false,
|
||||
page: () => DeferredWidget(mailbox_creator.loadLibrary, () => mailbox_creator.MailboxCreatorView()),
|
||||
binding: MailboxCreatorBindings()),
|
||||
name: AppRoutes.home,
|
||||
page: () => const HomeView(),
|
||||
binding: HomeBindings()),
|
||||
GetPage(
|
||||
name: AppRoutes.settings,
|
||||
page: () => DeferredWidget(manage_account_dashboard.loadLibrary, () => manage_account_dashboard.ManageAccountDashBoardView()),
|
||||
binding: ManageAccountDashBoardBindings()),
|
||||
name: AppRoutes.login,
|
||||
page: () => DeferredWidget(login.loadLibrary, () => login.LoginView()),
|
||||
binding: LoginBindings()),
|
||||
GetPage(
|
||||
name: AppRoutes.identityCreator,
|
||||
opaque: false,
|
||||
page: () => DeferredWidget(identity_creator.loadLibrary, () => identity_creator.IdentityCreatorView()),
|
||||
binding: IdentityCreatorBindings()),
|
||||
name: AppRoutes.session,
|
||||
page: () => DeferredWidget(session.loadLibrary, () => session.SessionView()),
|
||||
binding: SessionPageBindings()),
|
||||
GetPage(
|
||||
name: AppRoutes.rulesFilterCreator,
|
||||
opaque: false,
|
||||
page: () => DeferredWidget(
|
||||
rules_filter_creator.loadLibrary,
|
||||
() => rules_filter_creator.RuleFilterCreatorView()),
|
||||
binding: RulesFilterCreatorBindings()),
|
||||
name: AppRoutes.dashboard,
|
||||
page: () => DeferredWidget(mailbox_dashboard.loadLibrary, () => mailbox_dashboard.MailboxDashBoardView()),
|
||||
binding: MailboxDashBoardBindings()),
|
||||
GetPage(
|
||||
name: AppRoutes.emailsForwardCreator,
|
||||
opaque: false,
|
||||
page: () => DeferredWidget(
|
||||
emails_forward_creator.loadLibrary,
|
||||
() => emails_forward_creator.EmailsForwardCreatorView()),
|
||||
binding: EmailsForwardCreatorBindings()),
|
||||
name: AppRoutes.mailboxCreator,
|
||||
opaque: false,
|
||||
page: () => DeferredWidget(mailbox_creator.loadLibrary, () => mailbox_creator.MailboxCreatorView()),
|
||||
binding: MailboxCreatorBindings()),
|
||||
GetPage(
|
||||
name: AppRoutes.settings,
|
||||
page: () => DeferredWidget(manage_account_dashboard.loadLibrary,
|
||||
() => manage_account_dashboard.ManageAccountDashBoardView()),
|
||||
binding: ManageAccountDashBoardBindings()),
|
||||
GetPage(
|
||||
name: AppRoutes.identityCreator,
|
||||
opaque: false,
|
||||
page: () => DeferredWidget(identity_creator.loadLibrary,
|
||||
() => identity_creator.IdentityCreatorView()),
|
||||
binding: IdentityCreatorBindings()),
|
||||
GetPage(
|
||||
name: AppRoutes.rulesFilterCreator,
|
||||
opaque: false,
|
||||
page: () => DeferredWidget(rules_filter_creator.loadLibrary,
|
||||
() => rules_filter_creator.RuleFilterCreatorView()),
|
||||
binding: RulesFilterCreatorBindings()),
|
||||
GetPage(
|
||||
name: AppRoutes.emailsForwardCreator,
|
||||
opaque: false,
|
||||
page: () => DeferredWidget(emails_forward_creator.loadLibrary,
|
||||
() => emails_forward_creator.EmailsForwardCreatorView()),
|
||||
binding: EmailsForwardCreatorBindings()),
|
||||
GetPage(
|
||||
name: AppRoutes.contact,
|
||||
opaque: false,
|
||||
page: () => DeferredWidget(
|
||||
contact_view.loadLibrary,
|
||||
() => contact_view.ContactView()),
|
||||
page: () => DeferredWidget(contact_view.loadLibrary, () => contact_view.ContactView()),
|
||||
binding: ContactBindings()),
|
||||
];
|
||||
if (!BuildUtils.isWeb)
|
||||
...pagesOnlyOnMobile
|
||||
];
|
||||
}
|
||||
|
||||
@@ -3,13 +3,12 @@ abstract class AppRoutes {
|
||||
static const login = '/login';
|
||||
static const session = '/session';
|
||||
static const dashboard = '/dashboard';
|
||||
static const composer = '/composer';
|
||||
static const destinationPicker = '/destination_picker';
|
||||
static const settings = '/settings';
|
||||
|
||||
static const composer = '/composer';
|
||||
static const destinationPicker = '/destination_picker';
|
||||
static const mailboxCreator = '$dashboard/mailbox_creator';
|
||||
static const contact = '$dashboard/contact';
|
||||
|
||||
static const identityCreator = '$settings/identity_creator';
|
||||
static const rulesFilterCreator = '$settings/rules_filter_creator';
|
||||
static const emailsForwardCreator = '$settings/emails_forward_creator';
|
||||
|
||||
Reference in New Issue
Block a user