TF-658 Fix composer disappears when performing actions on browser
This commit is contained in:
@@ -4,7 +4,6 @@ import 'package:model/email/email_action_type.dart';
|
||||
import 'package:model/email/presentation_email.dart';
|
||||
import 'package:tmail_ui_user/features/base/action/ui_action.dart';
|
||||
import 'package:tmail_ui_user/features/thread/domain/model/filter_message_option.dart';
|
||||
import 'package:tmail_ui_user/main/routes/router_arguments.dart';
|
||||
|
||||
class DashBoardAction extends UIAction {
|
||||
static final idle = DashBoardAction();
|
||||
@@ -15,24 +14,6 @@ class DashBoardAction extends UIAction {
|
||||
List<Object?> get props => [];
|
||||
}
|
||||
|
||||
class ComposeEmailAction extends DashBoardAction {
|
||||
|
||||
final RouterArguments? arguments;
|
||||
|
||||
ComposeEmailAction({this.arguments});
|
||||
|
||||
@override
|
||||
List<Object?> get props => [arguments];
|
||||
}
|
||||
|
||||
class CloseComposeEmailAction extends DashBoardAction {
|
||||
|
||||
CloseComposeEmailAction();
|
||||
|
||||
@override
|
||||
List<Object?> get props => [];
|
||||
}
|
||||
|
||||
class RefreshAllEmailAction extends DashBoardAction {
|
||||
|
||||
RefreshAllEmailAction();
|
||||
|
||||
@@ -48,6 +48,7 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/quick_s
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/remove_email_drafts_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/save_recent_search_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/action/dashboard_action.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/composer_overlay_state.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/email_receive_time_type.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/quick_search_filter.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/domain/usecases/log_out_oidc_interactor.dart';
|
||||
@@ -94,6 +95,7 @@ class MailboxDashBoardController extends ReloadableController {
|
||||
final listEmailSelected = <PresentationEmail>[].obs;
|
||||
final listFilterQuickSearch = RxList<QuickSearchFilter>();
|
||||
final emailReceiveTimeType = Rxn<EmailReceiveTimeType>();
|
||||
final composerOverlayState = ComposerOverlayState.inActive.obs;
|
||||
|
||||
SearchQuery? searchQuery;
|
||||
Session? sessionCurrent;
|
||||
@@ -398,16 +400,21 @@ class MailboxDashBoardController extends ReloadableController {
|
||||
|
||||
void dispatchAction(UIAction action) {
|
||||
log('MailboxDashBoardController::dispatchAction(): ${action.runtimeType}');
|
||||
if (action is ComposeEmailAction) {
|
||||
routerArguments = action.arguments;
|
||||
ComposerBindings().dependencies();
|
||||
} else if (action is CloseComposeEmailAction) {
|
||||
routerArguments = null;
|
||||
Get.delete<ComposerController>();
|
||||
}
|
||||
dashBoardAction.value = action;
|
||||
}
|
||||
|
||||
void openComposerOverlay(RouterArguments? arguments) {
|
||||
routerArguments = arguments;
|
||||
ComposerBindings().dependencies();
|
||||
composerOverlayState.value = ComposerOverlayState.active;
|
||||
}
|
||||
|
||||
void closeComposerOverlay() {
|
||||
routerArguments = null;
|
||||
Get.delete<ComposerController>();
|
||||
composerOverlayState.value = ComposerOverlayState.inActive;
|
||||
}
|
||||
|
||||
void dispatchRoute(String route) {
|
||||
routePath.value = route;
|
||||
log('MailboxDashBoardController::dispatchRoute(): $route');
|
||||
@@ -543,20 +550,10 @@ class MailboxDashBoardController extends ReloadableController {
|
||||
}
|
||||
}
|
||||
|
||||
void composeEmailAction() {
|
||||
if (kIsWeb) {
|
||||
if (dashBoardAction.value is! ComposeEmailAction) {
|
||||
dispatchAction(ComposeEmailAction(arguments: ComposerArguments()));
|
||||
}
|
||||
} else {
|
||||
push(AppRoutes.COMPOSER, arguments: ComposerArguments());
|
||||
}
|
||||
}
|
||||
|
||||
void goToComposer(ComposerArguments arguments) {
|
||||
if (kIsWeb) {
|
||||
if (dashBoardAction.value is! ComposeEmailAction) {
|
||||
dispatchAction(ComposeEmailAction(arguments: arguments));
|
||||
if (BuildUtils.isWeb) {
|
||||
if (composerOverlayState.value == ComposerOverlayState.inActive) {
|
||||
openComposerOverlay(arguments);
|
||||
}
|
||||
} else {
|
||||
push(AppRoutes.COMPOSER, arguments: arguments);
|
||||
|
||||
@@ -5,8 +5,8 @@ import 'package:tmail_ui_user/features/base/mixin/network_connection_mixin.dart'
|
||||
import 'package:tmail_ui_user/features/composer/presentation/composer_view.dart';
|
||||
import 'package:tmail_ui_user/features/email/presentation/email_view.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/mailbox_view.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/action/dashboard_action.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/mailbox_dashboard_controller.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/composer_overlay_state.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/model/app_setting.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/model/reading_pane.dart';
|
||||
import 'package:tmail_ui_user/features/thread/presentation/thread_view.dart';
|
||||
@@ -42,7 +42,7 @@ class MailboxDashBoardView extends GetWidget<MailboxDashBoardController> with Ne
|
||||
landscapeMobile: ThreadView(),
|
||||
mobile: ThreadView(),
|
||||
),
|
||||
Obx(() => controller.dashBoardAction.value is ComposeEmailAction
|
||||
Obx(() => controller.composerOverlayState.value == ComposerOverlayState.active
|
||||
? ComposerView()
|
||||
: const SizedBox.shrink()),
|
||||
Obx(() => controller.isNetworkConnectionAvailable()
|
||||
@@ -90,7 +90,7 @@ class MailboxDashBoardView extends GetWidget<MailboxDashBoardController> with Ne
|
||||
|
||||
Widget _buildLargeScreenView(BuildContext context) {
|
||||
if (controller.isDrawerOpen && (_responsiveUtils.isDesktop(context) || _responsiveUtils.isTabletLarge(context))) {
|
||||
WidgetsBinding.instance?.addPostFrameCallback((_) {
|
||||
WidgetsBinding.instance.addPostFrameCallback((_) {
|
||||
controller.closeMailboxMenuDrawer();
|
||||
});
|
||||
}
|
||||
|
||||
@@ -9,6 +9,7 @@ import 'package:tmail_ui_user/features/mailbox/presentation/mailbox_view_web.dar
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/model/recent_search.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/action/dashboard_action.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/base_mailbox_dashboard_view.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/composer_overlay_state.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/quick_search_filter.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/widgets/email_quick_search_item_tile_widget.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/widgets/recent_search_item_tile_widget.dart';
|
||||
@@ -97,7 +98,7 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
|
||||
tablet: ThreadView(),
|
||||
mobile: ThreadView(),
|
||||
),
|
||||
Obx(() => controller.dashBoardAction.value is ComposeEmailAction
|
||||
Obx(() => controller.composerOverlayState.value == ComposerOverlayState.active
|
||||
? ComposerView()
|
||||
: const SizedBox.shrink()),
|
||||
Obx(() => controller.isNetworkConnectionAvailable()
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
|
||||
enum ComposerOverlayState {
|
||||
active, inActive
|
||||
}
|
||||
Reference in New Issue
Block a user