TF-1074 Handle go to path /destination_picker

This commit is contained in:
dab246
2022-10-24 23:39:05 +07:00
committed by Dat H. Pham
parent d3124f055b
commit daddeb78dc
17 changed files with 601 additions and 170 deletions
+3 -1
View File
@@ -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);
}
});
});
}
}