TF-381 Apply new UI EmailView for browser
This commit is contained in:
@@ -1,8 +1,6 @@
|
||||
import 'package:core/core.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
import 'package:tmail_ui_user/features/base/base_bindings.dart';
|
||||
import 'package:tmail_ui_user/features/caching/caching_manager.dart';
|
||||
import 'package:tmail_ui_user/features/caching/state_cache_client.dart';
|
||||
import 'package:tmail_ui_user/features/email/data/datasource/email_datasource.dart';
|
||||
import 'package:tmail_ui_user/features/email/data/datasource/html_datasource.dart';
|
||||
@@ -15,9 +13,6 @@ import 'package:tmail_ui_user/features/email/domain/repository/email_repository.
|
||||
import 'package:tmail_ui_user/features/email/domain/usecases/mark_as_star_email_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/usecases/mark_as_email_read_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/usecases/move_to_mailbox_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/login/data/repository/credential_repository_impl.dart';
|
||||
import 'package:tmail_ui_user/features/login/domain/repository/credential_repository.dart';
|
||||
import 'package:tmail_ui_user/features/login/domain/usecases/delete_credential_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/data/datasource/state_datasource.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/data/datasource_impl/state_datasource_impl.dart';
|
||||
import 'package:tmail_ui_user/features/thread/data/datasource/thread_datasource.dart';
|
||||
@@ -58,8 +53,6 @@ class ThreadBindings extends BaseBindings {
|
||||
Get.find<LoadMoreEmailsInMailboxInteractor>(),
|
||||
Get.find<SearchEmailInteractor>(),
|
||||
Get.find<SearchMoreEmailInteractor>(),
|
||||
Get.find<DeleteCredentialInteractor>(),
|
||||
Get.find<CachingManager>(),
|
||||
));
|
||||
}
|
||||
|
||||
@@ -97,19 +90,16 @@ class ThreadBindings extends BaseBindings {
|
||||
Get.lazyPut(() => LoadMoreEmailsInMailboxInteractor(Get.find<ThreadRepository>()));
|
||||
Get.lazyPut(() => SearchEmailInteractor(Get.find<ThreadRepository>()));
|
||||
Get.lazyPut(() => SearchMoreEmailInteractor(Get.find<ThreadRepository>()));
|
||||
Get.lazyPut(() => DeleteCredentialInteractor(Get.find<CredentialRepository>()));
|
||||
}
|
||||
|
||||
@override
|
||||
void bindingsRepository() {
|
||||
Get.lazyPut<CredentialRepository>(() => Get.find<CredentialRepositoryImpl>());
|
||||
Get.lazyPut<ThreadRepository>(() => Get.find<ThreadRepositoryImpl>());
|
||||
Get.lazyPut<EmailRepository>(() => Get.find<EmailRepositoryImpl>());
|
||||
}
|
||||
|
||||
@override
|
||||
void bindingsRepositoryImpl() {
|
||||
Get.lazyPut(() => CredentialRepositoryImpl(Get.find<SharedPreferences>()));
|
||||
Get.lazyPut(() => ThreadRepositoryImpl(
|
||||
{
|
||||
DataSourceType.network: Get.find<ThreadDataSource>(),
|
||||
|
||||
@@ -15,7 +15,6 @@ import 'package:jmap_dart_client/jmap/mail/email/keyword_identifier.dart';
|
||||
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
|
||||
import 'package:model/model.dart';
|
||||
import 'package:tmail_ui_user/features/base/base_controller.dart';
|
||||
import 'package:tmail_ui_user/features/caching/caching_manager.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';
|
||||
@@ -26,7 +25,6 @@ import 'package:tmail_ui_user/features/email/domain/state/mark_as_email_star_sta
|
||||
import 'package:tmail_ui_user/features/email/domain/state/move_to_mailbox_state.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/usecases/mark_as_star_email_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/email/presentation/model/composer_arguments.dart';
|
||||
import 'package:tmail_ui_user/features/login/domain/usecases/delete_credential_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_actions.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/remove_email_drafts_state.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/mailbox_dashboard_controller.dart';
|
||||
@@ -72,8 +70,6 @@ class ThreadController extends BaseController {
|
||||
final LoadMoreEmailsInMailboxInteractor _loadMoreEmailsInMailboxInteractor;
|
||||
final SearchEmailInteractor _searchEmailInteractor;
|
||||
final SearchMoreEmailInteractor _searchMoreEmailInteractor;
|
||||
final DeleteCredentialInteractor _deleteCredentialInteractor;
|
||||
final CachingManager _cachingManager;
|
||||
|
||||
final emailList = <PresentationEmail>[].obs;
|
||||
final emailListSearch = <PresentationEmail>[].obs;
|
||||
@@ -107,8 +103,6 @@ class ThreadController extends BaseController {
|
||||
this._loadMoreEmailsInMailboxInteractor,
|
||||
this._searchEmailInteractor,
|
||||
this._searchMoreEmailInteractor,
|
||||
this._deleteCredentialInteractor,
|
||||
this._cachingManager,
|
||||
);
|
||||
|
||||
@override
|
||||
@@ -752,30 +746,6 @@ class ThreadController extends BaseController {
|
||||
}
|
||||
}
|
||||
|
||||
void openUserSettingAction(BuildContext context, RelativeRect? position, List<PopupMenuEntry> popupMenuItems) async {
|
||||
await showMenu(
|
||||
context: context,
|
||||
position: position ?? RelativeRect.fromLTRB(16, 40, 16, 16),
|
||||
color: Colors.white,
|
||||
elevation: 5,
|
||||
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(14)),
|
||||
items: popupMenuItems);
|
||||
}
|
||||
|
||||
void _deleteCredential() async {
|
||||
await _deleteCredentialInteractor.execute();
|
||||
}
|
||||
|
||||
void _clearAllCache() async {
|
||||
await _cachingManager.clearAll();
|
||||
}
|
||||
|
||||
void logoutAction() {
|
||||
_deleteCredential();
|
||||
_clearAllCache();
|
||||
pushAndPopAll(AppRoutes.LOGIN);
|
||||
}
|
||||
|
||||
void composeEmailAction() {
|
||||
mailboxDashBoardController.composeEmailAction();
|
||||
}
|
||||
|
||||
@@ -4,11 +4,11 @@ import 'package:flutter/material.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:model/model.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/user_setting_popup_menu_mixin.dart';
|
||||
import 'package:tmail_ui_user/features/thread/domain/state/search_email_state.dart';
|
||||
import 'package:tmail_ui_user/features/thread/domain/state/search_more_email_state.dart';
|
||||
import 'package:tmail_ui_user/features/thread/presentation/extensions/filter_message_option_extension.dart';
|
||||
import 'package:tmail_ui_user/features/thread/presentation/thread_controller.dart';
|
||||
import 'package:tmail_ui_user/features/thread/presentation/widgets/app_action_sheet_action_builder.dart';
|
||||
import 'package:tmail_ui_user/features/thread/presentation/widgets/app_bar_thread_widget_builder.dart';
|
||||
import 'package:tmail_ui_user/features/thread/presentation/widgets/bottom_bar_thread_selection_widget.dart';
|
||||
import 'package:tmail_ui_user/features/thread/presentation/widgets/email_tile_builder.dart';
|
||||
@@ -17,7 +17,7 @@ import 'package:tmail_ui_user/features/thread/presentation/widgets/search_app_ba
|
||||
import 'package:tmail_ui_user/features/thread/presentation/widgets/suggestion_box_widget.dart';
|
||||
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||
|
||||
class ThreadView extends GetWidget<ThreadController> {
|
||||
class ThreadView extends GetWidget<ThreadController> with UserSettingPopupMenuMixin {
|
||||
|
||||
final _responsiveUtils = Get.find<ResponsiveUtils>();
|
||||
final _imagePaths = Get.find<ImagePaths>();
|
||||
@@ -92,8 +92,10 @@ class ThreadView extends GetWidget<ThreadController> {
|
||||
..backgroundColor(Colors.white)
|
||||
..textColor(Colors.black)
|
||||
..context(context)
|
||||
..addOnTapAvatarActionWithPositionClick((position) =>
|
||||
controller.openUserSettingAction(context, position, _popupMenuUserSettingActionTile(context)))
|
||||
..addOnTapAvatarActionWithPositionClick((position) => openUserSettingAction(
|
||||
context,
|
||||
position,
|
||||
popupMenuUserSettingActionTile(context, () => controller.mailboxDashBoardController.logoutAction())))
|
||||
..addBoxShadows([BoxShadow(
|
||||
color: AppColor.colorShadowBgContentEmail,
|
||||
spreadRadius: 1, blurRadius: 1, offset: Offset(0, 0.5))])
|
||||
@@ -631,20 +633,4 @@ class ThreadView extends GetWidget<ThreadController> {
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
List<PopupMenuEntry> _popupMenuUserSettingActionTile(BuildContext context) {
|
||||
return [
|
||||
PopupMenuItem(padding: EdgeInsets.symmetric(horizontal: 8), child: _logoutAction(context)),
|
||||
];
|
||||
}
|
||||
|
||||
Widget _logoutAction(BuildContext context) {
|
||||
return (AppActionSheetActionBuilder(
|
||||
Key('logout_action'),
|
||||
SvgPicture.asset(_imagePaths.icCloseMailbox, color: AppColor.colorTextButton, fit: BoxFit.fill),
|
||||
AppLocalizations.of(context).logout,
|
||||
iconLeftPadding:EdgeInsets.only(right: 12))
|
||||
..onActionClick((option) => controller.logoutAction()))
|
||||
.build();
|
||||
}
|
||||
}
|
||||
@@ -178,9 +178,9 @@ class AppBarThreadWidgetBuilder {
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
GestureDetector(
|
||||
onTap: () => !_responsiveUtils.isDesktop(_context) ? _onOpenListMailboxActionClick?.call() : null,
|
||||
onTap: () => !_responsiveUtils.isTabletLarge(_context) ? _onOpenListMailboxActionClick?.call() : null,
|
||||
child: Padding(
|
||||
padding: !_responsiveUtils.isDesktop(_context) ? EdgeInsets.zero : EdgeInsets.only(bottom: 8, top: 8),
|
||||
padding: !_responsiveUtils.isTabletLarge(_context) ? EdgeInsets.zero : EdgeInsets.only(bottom: 8, top: 8),
|
||||
child: Container(
|
||||
padding: EdgeInsets.zero,
|
||||
margin: EdgeInsets.zero,
|
||||
@@ -191,14 +191,14 @@ class AppBarThreadWidgetBuilder {
|
||||
overflow: GetPlatform.isWeb ? TextOverflow.clip : TextOverflow.ellipsis,
|
||||
style: TextStyle(fontSize: 21, color: AppColor.colorNameEmail, fontWeight: FontWeight.w700))
|
||||
))),
|
||||
if (!_responsiveUtils.isDesktop(_context))
|
||||
if (!_responsiveUtils.isTabletLarge(_context))
|
||||
Transform(
|
||||
transform: Matrix4.translationValues(-8.0, 0.0, 0.0),
|
||||
child: IconButton(
|
||||
padding: EdgeInsets.zero,
|
||||
color: AppColor.baseTextColor,
|
||||
icon: SvgPicture.asset(_imagePaths.icChevronDown, width: 20, height: 16, fit: BoxFit.fill),
|
||||
onPressed: () => !_responsiveUtils.isDesktop(_context) ? _onOpenListMailboxActionClick?.call() : null))
|
||||
onPressed: () => !_responsiveUtils.isTabletLarge(_context) ? _onOpenListMailboxActionClick?.call() : null))
|
||||
]
|
||||
);
|
||||
}
|
||||
@@ -208,9 +208,9 @@ class AppBarThreadWidgetBuilder {
|
||||
var widthSiblingsWidget = 220;
|
||||
if (_responsiveUtils.isTablet(_context)) {
|
||||
width = width * 0.7;
|
||||
widthSiblingsWidget = 300;
|
||||
widthSiblingsWidget = 250;
|
||||
} else if (_responsiveUtils.isTabletLarge(_context)) {
|
||||
width = width * 0.35;
|
||||
width = width * 0.6;
|
||||
widthSiblingsWidget = 250;
|
||||
} else if (_responsiveUtils.isDesktop(_context)) {
|
||||
width = width * 0.25;
|
||||
|
||||
Reference in New Issue
Block a user