TF-295 Apply new UI for composer web browser

This commit is contained in:
dab246
2022-03-16 15:57:59 +07:00
committed by Dat H. Pham
parent 8c66ef9105
commit 1f9fd7c0a7
38 changed files with 1181 additions and 219 deletions
@@ -11,16 +11,20 @@ import 'package:tmail_ui_user/features/base/base_controller.dart';
import 'package:tmail_ui_user/features/composer/domain/state/save_email_as_drafts_state.dart';
import 'package:tmail_ui_user/features/composer/domain/state/send_email_state.dart';
import 'package:tmail_ui_user/features/composer/domain/state/update_email_drafts_state.dart';
import 'package:tmail_ui_user/features/composer/presentation/composer_bindings.dart';
import 'package:tmail_ui_user/features/composer/presentation/composer_controller.dart';
import 'package:tmail_ui_user/features/email/presentation/email_controller.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/get_user_profile_state.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/remove_email_drafts_state.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_user_profile_interactor.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/remove_email_drafts_interactor.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/dashboard_action.dart';
import 'package:tmail_ui_user/features/thread/domain/model/search_query.dart';
import 'package:tmail_ui_user/features/thread/domain/state/search_email_state.dart';
import 'package:tmail_ui_user/features/thread/presentation/model/search_state.dart';
import 'package:tmail_ui_user/features/thread/presentation/model/search_status.dart';
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
import 'package:tmail_ui_user/main/routes/router_arguments.dart';
class MailboxDashBoardController extends BaseController {
@@ -36,6 +40,7 @@ class MailboxDashBoardController extends BaseController {
final userProfile = Rxn<UserProfile>();
final searchState = SearchState.initial().obs;
final suggestionSearch = <String>[].obs;
final dashBoardAction = DashBoardAction.none.obs;
SearchQuery? searchQuery;
Session? sessionCurrent;
@@ -43,6 +48,7 @@ class MailboxDashBoardController extends BaseController {
Map<MailboxId, PresentationMailbox> mapMailbox = Map();
TextEditingController searchInputController = TextEditingController();
FocusNode searchFocus = FocusNode();
RouterArguments? routerArguments;
MailboxDashBoardController(
this._getUserProfileInteractor,
@@ -225,6 +231,20 @@ class MailboxDashBoardController extends BaseController {
}
}
void dispatchDashBoardAction(DashBoardAction action, {RouterArguments? arguments}) {
switch(action) {
case DashBoardAction.none:
routerArguments = null;
Get.delete<ComposerController>();
break;
case DashBoardAction.compose:
routerArguments = arguments;
ComposerBindings().dependencies();
break;
}
dashBoardAction.value = action;
}
@override
void onClose() {
searchInputController.dispose();
@@ -1,9 +1,12 @@
import 'package:core/core.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:tmail_ui_user/features/composer/presentation/composer_view.dart'
if (dart.library.html) 'package:tmail_ui_user/features/composer/presentation/composer_view_web.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/mailbox_dashboard_controller.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/dashboard_action.dart';
import 'package:tmail_ui_user/features/thread/presentation/thread_view.dart';
class MailboxDashBoardView extends GetWidget<MailboxDashBoardController> {
@@ -30,35 +33,40 @@ class MailboxDashBoardView extends GetWidget<MailboxDashBoardController> {
desktop: SizedBox.shrink()
),
drawerEnableOpenDragGesture: !responsiveUtils.isDesktop(context),
body: ResponsiveWidget(
responsiveUtils: responsiveUtils,
desktop: Container(
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.start,
children: [
Expanded(flex: 1, child: MailboxView()),
Expanded(flex: 1, child: ThreadView()),
Expanded(flex: 2, child: EmailView()),
],
),
),
tabletLarge: Container(
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.start,
children: [
Container(
width: responsiveUtils.getSizeWidthScreen(context) * 0.35,
padding: EdgeInsets.symmetric(horizontal: 16),
child: ThreadView()
body: Stack(children: [
ResponsiveWidget(
responsiveUtils: responsiveUtils,
desktop: Container(
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.start,
children: [
Expanded(flex: 1, child: MailboxView()),
Expanded(flex: 1, child: ThreadView()),
Expanded(flex: 2, child: EmailView()),
],
),
Expanded(child: EmailView()),
],
),
),
tablet: ThreadView(),
mobile: ThreadView()),
),
tabletLarge: Container(
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.start,
children: [
Container(
width: responsiveUtils.getSizeWidthScreen(context) * 0.35,
padding: EdgeInsets.symmetric(horizontal: 16),
child: ThreadView()
),
Expanded(child: EmailView()),
],
),
),
tablet: ThreadView(),
mobile: ThreadView()),
Obx(() => controller.dashBoardAction == DashBoardAction.compose
? ComposerView()
: SizedBox.shrink()),
]),
);
}
}
@@ -0,0 +1,5 @@
enum DashBoardAction {
none,
compose
}