TF-1074 Handle go to path /destination_picker
This commit is contained in:
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user