TF-1427 Remove object do not used
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
|
||||
import 'package:core/presentation/extensions/color_extension.dart';
|
||||
import 'package:core/presentation/utils/responsive_utils.dart';
|
||||
import 'package:core/presentation/views/responsive/responsive_widget.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
|
||||
@@ -27,60 +28,62 @@ class BackgroundWidgetBuilder extends StatelessWidget {
|
||||
key: const Key('background_widget'),
|
||||
child: SizedBox(
|
||||
width: maxWidth ?? 360,
|
||||
child: CustomScrollView(
|
||||
slivers: [
|
||||
SliverFillRemaining(
|
||||
child: Container(
|
||||
color: Colors.transparent,
|
||||
padding: const EdgeInsets.symmetric(horizontal: 12),
|
||||
child: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: [
|
||||
if (iconSVG != null)
|
||||
SvgPicture.asset(
|
||||
iconSVG!,
|
||||
width: responsiveUtils.isLandscapeMobile(context)
|
||||
? 120
|
||||
: 212,
|
||||
height: responsiveUtils.isLandscapeMobile(context)
|
||||
? 120
|
||||
: 212,
|
||||
fit: BoxFit.fill
|
||||
),
|
||||
Padding(
|
||||
padding: EdgeInsets.only(top: iconSVG != null ? 12 : 0),
|
||||
child: Text(
|
||||
title,
|
||||
style: const TextStyle(
|
||||
color: Colors.black,
|
||||
fontSize: 20,
|
||||
fontWeight: FontWeight.normal
|
||||
),
|
||||
textAlign: TextAlign.center,
|
||||
),
|
||||
),
|
||||
if (subTitle != null)
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(top: 12),
|
||||
child: Text(
|
||||
subTitle!,
|
||||
style: const TextStyle(
|
||||
color: AppColor.colorSubtitle,
|
||||
fontSize: 15,
|
||||
fontWeight: FontWeight.normal
|
||||
),
|
||||
textAlign: TextAlign.center,
|
||||
),
|
||||
)
|
||||
],
|
||||
),
|
||||
height: MediaQuery.of(context).size.height,
|
||||
),
|
||||
)
|
||||
]
|
||||
child: ResponsiveWidget(
|
||||
mobile: CustomScrollView(slivers: [
|
||||
SliverFillRemaining(child: _buildMessageBody(context))
|
||||
]),
|
||||
landscapeMobile: SingleChildScrollView(child: _buildMessageBody(context)),
|
||||
responsiveUtils: responsiveUtils,
|
||||
),
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
Widget _buildMessageBody(BuildContext context) {
|
||||
return Container(
|
||||
color: Colors.transparent,
|
||||
padding: const EdgeInsets.symmetric(horizontal: 12),
|
||||
child: Column(
|
||||
mainAxisAlignment: responsiveUtils.isLandscapeMobile(context)
|
||||
? MainAxisAlignment.start
|
||||
: MainAxisAlignment.center,
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: [
|
||||
if (iconSVG != null)
|
||||
SvgPicture.asset(
|
||||
iconSVG!,
|
||||
width: 212,
|
||||
height: 212,
|
||||
fit: BoxFit.fill
|
||||
),
|
||||
Padding(
|
||||
padding: EdgeInsets.only(top: iconSVG != null ? 12 : 0),
|
||||
child: Text(
|
||||
title,
|
||||
style: const TextStyle(
|
||||
color: Colors.black,
|
||||
fontSize: 20,
|
||||
fontWeight: FontWeight.normal
|
||||
),
|
||||
textAlign: TextAlign.center,
|
||||
),
|
||||
),
|
||||
if (subTitle != null)
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(top: 12),
|
||||
child: Text(
|
||||
subTitle!,
|
||||
style: const TextStyle(
|
||||
color: AppColor.colorSubtitle,
|
||||
fontSize: 15,
|
||||
fontWeight: FontWeight.normal
|
||||
),
|
||||
textAlign: TextAlign.center,
|
||||
),
|
||||
)
|
||||
],
|
||||
),
|
||||
height: MediaQuery.of(context).size.height,
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -173,13 +173,13 @@ abstract class BaseMailboxController extends BaseController {
|
||||
}).toList();
|
||||
}
|
||||
|
||||
bool get defaultMailboxHasChild =>
|
||||
defaultMailboxTree.value.root.childrenItems?.isNotEmpty ?? false;
|
||||
bool get defaultMailboxIsNotEmpty =>
|
||||
defaultMailboxTree.value.root.childrenItems?.isNotEmpty ?? false;
|
||||
|
||||
bool get personalMailboxHasChild =>
|
||||
personalMailboxTree.value.root.childrenItems?.isNotEmpty ?? false;
|
||||
bool get personalMailboxIsNotEmpty =>
|
||||
personalMailboxTree.value.root.childrenItems?.isNotEmpty ?? false;
|
||||
|
||||
bool get teamMailboxesHasChild {
|
||||
bool get teamMailboxesIsNotEmpty {
|
||||
return (teamMailboxesTree.value.root.childrenItems?.isNotEmpty ?? false)
|
||||
&& !teamMailboxesTree.value.root.item.isTeamMailboxes;
|
||||
}
|
||||
|
||||
@@ -216,7 +216,7 @@ class DestinationPickerView extends GetWidget<DestinationPickerController>
|
||||
_buildLoadingView(),
|
||||
if (actions?.hasAllMailboxDefault() == true)
|
||||
_buildAllMailboxes(context, actions, mailboxIdSelected),
|
||||
Obx(() => controller.defaultMailboxHasChild
|
||||
Obx(() => controller.defaultMailboxIsNotEmpty
|
||||
? _buildMailboxCategory(
|
||||
context,
|
||||
MailboxCategories.exchange,
|
||||
@@ -224,7 +224,7 @@ class DestinationPickerView extends GetWidget<DestinationPickerController>
|
||||
actions,
|
||||
mailboxIdSelected)
|
||||
: const SizedBox.shrink()),
|
||||
Obx(() => controller.personalMailboxHasChild
|
||||
Obx(() => controller.personalMailboxIsNotEmpty
|
||||
? _buildMailboxCategory(
|
||||
context,
|
||||
MailboxCategories.personalMailboxes,
|
||||
|
||||
@@ -21,7 +21,6 @@ import 'package:tmail_ui_user/features/mailbox/domain/usecases/get_all_mailbox_i
|
||||
import 'package:tmail_ui_user/features/mailbox/domain/usecases/move_mailbox_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/domain/usecases/refresh_all_mailbox_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/domain/usecases/rename_mailbox_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/domain/usecases/search_mailbox_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/domain/usecases/subscribe_mailbox_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/domain/usecases/subscribe_multiple_mailbox_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/mailbox_controller.dart';
|
||||
@@ -52,7 +51,6 @@ class MailboxBindings extends BaseBindings {
|
||||
Get.find<GetAllMailboxInteractor>(),
|
||||
Get.find<RefreshAllMailboxInteractor>(),
|
||||
Get.find<CreateNewMailboxInteractor>(),
|
||||
Get.find<SearchMailboxInteractor>(),
|
||||
Get.find<DeleteMultipleMailboxInteractor>(),
|
||||
Get.find<RenameMailboxInteractor>(),
|
||||
Get.find<MoveMailboxInteractor>(),
|
||||
@@ -95,7 +93,6 @@ class MailboxBindings extends BaseBindings {
|
||||
Get.lazyPut(() => GetAllMailboxInteractor(Get.find<MailboxRepository>()));
|
||||
Get.lazyPut(() => RefreshAllMailboxInteractor(Get.find<MailboxRepository>()));
|
||||
Get.lazyPut(() => CreateNewMailboxInteractor(Get.find<MailboxRepository>()));
|
||||
Get.lazyPut(() => SearchMailboxInteractor());
|
||||
Get.lazyPut(() => DeleteMultipleMailboxInteractor(Get.find<MailboxRepository>()));
|
||||
Get.lazyPut(() => VerifyNameInteractor());
|
||||
Get.lazyPut(() => RenameMailboxInteractor(Get.find<MailboxRepository>()));
|
||||
|
||||
@@ -41,7 +41,6 @@ import 'package:tmail_ui_user/features/mailbox/domain/state/mark_as_mailbox_read
|
||||
import 'package:tmail_ui_user/features/mailbox/domain/state/move_mailbox_state.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/domain/state/refresh_changes_all_mailboxes_state.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/domain/state/rename_mailbox_state.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/domain/state/search_mailbox_state.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/domain/state/subscribe_mailbox_state.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/domain/state/subscribe_multiple_mailbox_state.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/domain/usecases/create_new_mailbox_interactor.dart';
|
||||
@@ -50,7 +49,6 @@ import 'package:tmail_ui_user/features/mailbox/domain/usecases/get_all_mailbox_i
|
||||
import 'package:tmail_ui_user/features/mailbox/domain/usecases/move_mailbox_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/domain/usecases/refresh_all_mailbox_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/domain/usecases/rename_mailbox_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/domain/usecases/search_mailbox_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/domain/usecases/subscribe_mailbox_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/domain/usecases/subscribe_multiple_mailbox_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/action/mailbox_ui_action.dart';
|
||||
@@ -74,8 +72,6 @@ import 'package:tmail_ui_user/features/thread/domain/model/search_query.dart';
|
||||
import 'package:tmail_ui_user/features/thread/domain/state/empty_trash_folder_state.dart';
|
||||
import 'package:tmail_ui_user/features/thread/domain/state/mark_as_multiple_email_read_state.dart';
|
||||
import 'package:tmail_ui_user/features/thread/domain/state/move_multiple_email_to_mailbox_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/app_routes.dart';
|
||||
import 'package:tmail_ui_user/main/routes/navigation_router.dart';
|
||||
@@ -94,22 +90,16 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM
|
||||
final GetAllMailboxInteractor _getAllMailboxInteractor;
|
||||
final RefreshAllMailboxInteractor _refreshAllMailboxInteractor;
|
||||
final CreateNewMailboxInteractor _createNewMailboxInteractor;
|
||||
final SearchMailboxInteractor _searchMailboxInteractor;
|
||||
final DeleteMultipleMailboxInteractor _deleteMultipleMailboxInteractor;
|
||||
final RenameMailboxInteractor _renameMailboxInteractor;
|
||||
final MoveMailboxInteractor _moveMailboxInteractor;
|
||||
final SubscribeMailboxInteractor _subscribeMailboxInteractor;
|
||||
final SubscribeMultipleMailboxInteractor _subscribeMultipleMailboxInteractor;
|
||||
|
||||
final listMailboxSearched = <PresentationMailbox>[].obs;
|
||||
final searchState = SearchState.initial().obs;
|
||||
final searchQuery = SearchQuery.initial().obs;
|
||||
final currentSelectMode = SelectMode.INACTIVE.obs;
|
||||
final mailboxCategoriesExpandMode = MailboxCategoriesExpandMode.initial().obs;
|
||||
|
||||
final _openMailboxEventController = StreamController<OpenMailboxViewEvent>();
|
||||
final searchInputController = TextEditingController();
|
||||
final searchFocus = FocusNode();
|
||||
final mailboxListScrollController = ScrollController();
|
||||
|
||||
PresentationMailbox? get selectedMailbox => mailboxDashBoardController.selectedMailbox.value;
|
||||
@@ -120,7 +110,6 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM
|
||||
this._getAllMailboxInteractor,
|
||||
this._refreshAllMailboxInteractor,
|
||||
this._createNewMailboxInteractor,
|
||||
this._searchMailboxInteractor,
|
||||
this._deleteMultipleMailboxInteractor,
|
||||
this._renameMailboxInteractor,
|
||||
this._moveMailboxInteractor,
|
||||
@@ -133,7 +122,6 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM
|
||||
@override
|
||||
void onInit() {
|
||||
_registerObxStreamListener();
|
||||
_registerSearchFocusListener();
|
||||
super.onInit();
|
||||
}
|
||||
|
||||
@@ -149,8 +137,6 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM
|
||||
|
||||
@override
|
||||
void onClose() {
|
||||
searchInputController.dispose();
|
||||
searchFocus.dispose();
|
||||
_openMailboxEventController.close();
|
||||
mailboxListScrollController.dispose();
|
||||
super.onClose();
|
||||
@@ -176,8 +162,6 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM
|
||||
(failure) {
|
||||
if (failure is CreateNewMailboxFailure) {
|
||||
_createNewMailboxFailure(failure);
|
||||
} else if (failure is SearchMailboxFailure) {
|
||||
_searchMailboxFailure(failure);
|
||||
} else if (failure is DeleteMultipleMailboxFailure) {
|
||||
_deleteMailboxFailure(failure);
|
||||
}
|
||||
@@ -189,14 +173,10 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM
|
||||
_initialMailboxVariableStorage(isRefreshChange: true);
|
||||
} else if (success is CreateNewMailboxSuccess) {
|
||||
_createNewMailboxSuccess(success);
|
||||
} else if (success is SearchMailboxSuccess) {
|
||||
_searchMailboxSuccess(success);
|
||||
} else if (success is DeleteMultipleMailboxAllSuccess) {
|
||||
_deleteMultipleMailboxSuccess(success.listMailboxIdDeleted, success.currentMailboxState);
|
||||
} else if (success is DeleteMultipleMailboxHasSomeSuccess) {
|
||||
_deleteMultipleMailboxSuccess(success.listMailboxIdDeleted, success.currentMailboxState);
|
||||
} else if ((success is GetAllMailboxSuccess || success is RefreshChangesAllMailboxSuccess) && isSearchActive()) {
|
||||
_searchMailboxAction(allMailboxes, searchQuery.value);
|
||||
} else if (success is RenameMailboxSuccess) {
|
||||
refreshMailboxChanges(currentMailboxState: success.currentMailboxState);
|
||||
} else if (success is MoveMailboxSuccess) {
|
||||
@@ -291,17 +271,6 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM
|
||||
});
|
||||
}
|
||||
|
||||
void _registerSearchFocusListener() {
|
||||
searchFocus.addListener(() {
|
||||
final hasFocus = searchFocus.hasFocus;
|
||||
final query = searchQuery.value.value;
|
||||
log('MailboxController::_registerSearchFocusListener(): hasFocus: $hasFocus | query: $query');
|
||||
if (!hasFocus && query.isEmpty) {
|
||||
disableSearch();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
void _initCollapseMailboxCategories() {
|
||||
if (kIsWeb && currentContext != null
|
||||
&& (_responsiveUtils.isMobile(currentContext!) || _responsiveUtils.isTablet(currentContext!))) {
|
||||
@@ -319,14 +288,10 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM
|
||||
}
|
||||
|
||||
void refreshAllMailbox() {
|
||||
if (!isSearchActive()) {
|
||||
final session = mailboxDashBoardController.sessionCurrent;
|
||||
final accountId = mailboxDashBoardController.accountId.value;
|
||||
if (session != null && accountId != null) {
|
||||
consumeState(_getAllMailboxInteractor.execute(session, accountId));
|
||||
}
|
||||
} else {
|
||||
_searchMailboxAction(allMailboxes, searchQuery.value);
|
||||
final session = mailboxDashBoardController.sessionCurrent;
|
||||
final accountId = mailboxDashBoardController.accountId.value;
|
||||
if (session != null && accountId != null) {
|
||||
consumeState(_getAllMailboxInteractor.execute(session, accountId));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -594,52 +559,12 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM
|
||||
}
|
||||
}
|
||||
|
||||
bool isSearchActive() => searchState.value.searchStatus == SearchStatus.ACTIVE;
|
||||
|
||||
void openSearchViewAction(BuildContext context) {
|
||||
SearchMailboxBindings().dependencies();
|
||||
mailboxDashBoardController.searchMailboxActivated.value = true;
|
||||
closeMailboxScreen(context);
|
||||
}
|
||||
|
||||
void disableSearch() {
|
||||
_cancelSelectMailbox();
|
||||
listMailboxSearched.clear();
|
||||
searchState.value = searchState.value.disableSearchState();
|
||||
searchQuery.value = SearchQuery.initial();
|
||||
searchInputController.clear();
|
||||
searchFocus.unfocus();
|
||||
}
|
||||
|
||||
void clearSearchText() {
|
||||
searchQuery.value = SearchQuery.initial();
|
||||
searchFocus.requestFocus();
|
||||
listMailboxSearched.clear();
|
||||
}
|
||||
|
||||
void searchMailbox(String value) {
|
||||
searchQuery.value = SearchQuery(value);
|
||||
_searchMailboxAction(allMailboxes, searchQuery.value);
|
||||
}
|
||||
|
||||
void _searchMailboxAction(List<PresentationMailbox> allMailboxes, SearchQuery searchQuery) {
|
||||
log('MailboxController::_searchMailboxAction():');
|
||||
if (searchQuery.value.isNotEmpty) {
|
||||
consumeState(_searchMailboxInteractor.execute(allMailboxes, searchQuery));
|
||||
} else {
|
||||
listMailboxSearched.clear();
|
||||
}
|
||||
}
|
||||
|
||||
void _searchMailboxSuccess(SearchMailboxSuccess success) {
|
||||
final mailboxesSearchedWithPath = findMailboxPath(success.mailboxesSearched);
|
||||
listMailboxSearched.value = mailboxesSearchedWithPath;
|
||||
}
|
||||
|
||||
void _searchMailboxFailure(SearchMailboxFailure failure) {
|
||||
listMailboxSearched.clear();
|
||||
}
|
||||
|
||||
void enableSelectionMailbox() {
|
||||
currentSelectMode.value = SelectMode.ACTIVE;
|
||||
}
|
||||
@@ -650,43 +575,25 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM
|
||||
|
||||
bool isSelectionEnabled() => currentSelectMode.value == SelectMode.ACTIVE;
|
||||
|
||||
void selectMailboxSearched(BuildContext context, PresentationMailbox mailboxSelected) {
|
||||
listMailboxSearched.value = listMailboxSearched
|
||||
.map((mailbox) => mailbox.id == mailboxSelected.id ? mailbox.toggleSelectPresentationMailbox() : mailbox)
|
||||
.toList();
|
||||
}
|
||||
|
||||
void _cancelSelectMailbox() {
|
||||
if (isSearchActive()) {
|
||||
listMailboxSearched.value = listMailboxSearched
|
||||
.map((mailbox) => mailbox.toSelectedPresentationMailbox(selectMode: SelectMode.INACTIVE))
|
||||
.toList();
|
||||
} else {
|
||||
unAllSelectedMailboxNode();
|
||||
}
|
||||
unAllSelectedMailboxNode();
|
||||
currentSelectMode.value = SelectMode.INACTIVE;
|
||||
}
|
||||
|
||||
List<PresentationMailbox> get listMailboxSelected {
|
||||
if (isSearchActive()) {
|
||||
return listMailboxSearched
|
||||
.where((mailbox) => mailbox.selectMode == SelectMode.ACTIVE)
|
||||
.toList();
|
||||
} else {
|
||||
final defaultMailboxSelected = defaultMailboxTree.value
|
||||
.findNodes((node) => node.selectMode == SelectMode.ACTIVE);
|
||||
final defaultMailboxSelected = defaultMailboxTree.value
|
||||
.findNodes((node) => node.selectMode == SelectMode.ACTIVE);
|
||||
|
||||
final folderMailboxSelected = personalMailboxTree.value
|
||||
.findNodes((node) => node.selectMode == SelectMode.ACTIVE);
|
||||
final folderMailboxSelected = personalMailboxTree.value
|
||||
.findNodes((node) => node.selectMode == SelectMode.ACTIVE);
|
||||
|
||||
final teamMailboxesSelected = teamMailboxesTree.value
|
||||
.findNodes((node) => node.selectMode == SelectMode.ACTIVE);
|
||||
final teamMailboxesSelected = teamMailboxesTree.value
|
||||
.findNodes((node) => node.selectMode == SelectMode.ACTIVE);
|
||||
|
||||
return [defaultMailboxSelected, folderMailboxSelected, teamMailboxesSelected]
|
||||
.expand((node) => node)
|
||||
.map((node) => node.item)
|
||||
.toList();
|
||||
}
|
||||
return [defaultMailboxSelected, folderMailboxSelected, teamMailboxesSelected]
|
||||
.expand((node) => node)
|
||||
.map((node) => node.item)
|
||||
.toList();
|
||||
}
|
||||
|
||||
void pressMailboxSelectionAction(
|
||||
|
||||
@@ -13,10 +13,8 @@ import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_node.d
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/widgets/bottom_bar_selection_mailbox_widget.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/widgets/mailbox_bottom_sheet_action_tile_builder.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/widgets/mailbox_folder_tile_builder.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/widgets/mailbox_search_tile_builder.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/widgets/user_information_widget_builder.dart';
|
||||
import 'package:tmail_ui_user/features/quotas/presentation/widget/quotas_footer_widget.dart';
|
||||
import 'package:tmail_ui_user/features/thread/presentation/widgets/search_app_bar_widget.dart';
|
||||
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||
|
||||
class MailboxView extends GetWidget<MailboxController> {
|
||||
@@ -47,14 +45,8 @@ class MailboxView extends GetWidget<MailboxController> {
|
||||
Expanded(
|
||||
child: Column(children: [
|
||||
_buildHeaderMailbox(context),
|
||||
Obx(() => controller.isSearchActive()
|
||||
? SafeArea(bottom: false, top: false, right: false,
|
||||
child: _buildInputSearchFormWidget(context))
|
||||
: const SizedBox.shrink()),
|
||||
Expanded(child: Obx(() => Container(
|
||||
color: controller.isSearchActive()
|
||||
? Colors.white
|
||||
: AppColor.colorBgMailbox,
|
||||
Expanded(child: Container(
|
||||
color: Colors.white,
|
||||
child: RefreshIndicator(
|
||||
color: AppColor.primaryColor,
|
||||
onRefresh: () async => controller.refreshAllMailbox(),
|
||||
@@ -62,19 +54,16 @@ class MailboxView extends GetWidget<MailboxController> {
|
||||
top: false,
|
||||
right: false,
|
||||
bottom: false,
|
||||
child: controller.isSearchActive()
|
||||
? _buildListMailboxSearched(context)
|
||||
: _buildListMailbox(context)
|
||||
child: _buildListMailbox(context)
|
||||
)
|
||||
),
|
||||
))),
|
||||
)),
|
||||
Obx(() => controller.isSelectionEnabled()
|
||||
? _buildOptionSelectionMailbox(context)
|
||||
: const SizedBox.shrink()),
|
||||
]),
|
||||
),
|
||||
Obx(() => controller.isMailboxListScrollable.isTrue
|
||||
&& !controller.isSearchActive()
|
||||
&& !controller.isSelectionEnabled()
|
||||
? const QuotasFooterWidget()
|
||||
: const SizedBox.shrink(),
|
||||
@@ -82,7 +71,6 @@ class MailboxView extends GetWidget<MailboxController> {
|
||||
Obx(() {
|
||||
final appInformation = controller.mailboxDashBoardController.appInformation.value;
|
||||
if (appInformation != null
|
||||
&& !controller.isSearchActive()
|
||||
&& !controller.isSelectionEnabled()) {
|
||||
if (_responsiveUtils.isLandscapeMobile(context)) {
|
||||
return const SizedBox.shrink();
|
||||
@@ -111,19 +99,12 @@ class MailboxView extends GetWidget<MailboxController> {
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(left: 10),
|
||||
child: _buildCloseScreenButton(context)),
|
||||
SizedBox(width: controller.isSelectionEnabled() ? 49 : 40),
|
||||
Expanded(child: Text(
|
||||
AppLocalizations.of(context).folders,
|
||||
textAlign: TextAlign.center,
|
||||
style: const TextStyle(fontSize: 21, color: Colors.black, fontWeight: FontWeight.bold))),
|
||||
Obx(() {
|
||||
if (controller.isSearchActive()) {
|
||||
return controller.listMailboxSearched.isNotEmpty
|
||||
? _buildEditMailboxButton(context, controller.isSelectionEnabled())
|
||||
: const SizedBox(width: 60);
|
||||
} else {
|
||||
return _buildEditMailboxButton(context, controller.isSelectionEnabled());
|
||||
}
|
||||
})
|
||||
Obx(() => _buildEditMailboxButton(context, controller.isSelectionEnabled()))
|
||||
]
|
||||
)
|
||||
),
|
||||
@@ -205,9 +186,20 @@ class MailboxView extends GetWidget<MailboxController> {
|
||||
return _buildUserInformation(context);
|
||||
}),
|
||||
_buildLoadingView(),
|
||||
Obx(() => controller.defaultMailboxTree.value.root.childrenItems?.isNotEmpty ?? false
|
||||
? _buildMailboxCategory(context, MailboxCategories.exchange, controller.defaultMailboxTree.value.root)
|
||||
: const SizedBox.shrink()),
|
||||
Obx(() {
|
||||
if (controller.defaultMailboxIsNotEmpty) {
|
||||
return Padding(
|
||||
padding: const EdgeInsets.only(top: 16),
|
||||
child: _buildMailboxCategory(
|
||||
context,
|
||||
MailboxCategories.exchange,
|
||||
controller.defaultRootNode
|
||||
),
|
||||
);
|
||||
} else {
|
||||
return const SizedBox.shrink();
|
||||
}
|
||||
}),
|
||||
const Divider(color: AppColor.colorDividerMailbox, height: 0.5, thickness: 0.2),
|
||||
const SizedBox(height: 12),
|
||||
Container(
|
||||
@@ -233,7 +225,7 @@ class MailboxView extends GetWidget<MailboxController> {
|
||||
color: AppColor.colorTextButton,
|
||||
fit: BoxFit.fill
|
||||
),
|
||||
tooltip: AppLocalizations.of(context).search_folder,
|
||||
tooltip: AppLocalizations.of(context).searchForMailboxes,
|
||||
onTap: () => controller.openSearchViewAction(context)
|
||||
),
|
||||
buildIconWeb(
|
||||
@@ -249,19 +241,36 @@ class MailboxView extends GetWidget<MailboxController> {
|
||||
]),
|
||||
),
|
||||
const SizedBox(height: 8),
|
||||
Obx(() => controller.personalMailboxTree.value.root.childrenItems?.isNotEmpty ?? false
|
||||
? _buildMailboxCategory(context, MailboxCategories.personalMailboxes, controller.personalMailboxTree.value.root)
|
||||
: const SizedBox.shrink()),
|
||||
Obx(() {
|
||||
if (controller.personalMailboxIsNotEmpty) {
|
||||
return _buildMailboxCategory(
|
||||
context,
|
||||
MailboxCategories.personalMailboxes,
|
||||
controller.personalRootNode
|
||||
);
|
||||
} else {
|
||||
return const SizedBox.shrink();
|
||||
}
|
||||
}),
|
||||
const SizedBox(height: 8),
|
||||
Obx(() => controller.teamMailboxesTree.value.root.childrenItems?.isNotEmpty ?? false
|
||||
? _buildMailboxCategory(context, MailboxCategories.teamMailboxes, controller.teamMailboxesTree.value.root)
|
||||
: const SizedBox.shrink()),
|
||||
Obx(() => controller.isMailboxListScrollable.isFalse
|
||||
&& !controller.isSearchActive()
|
||||
&& !controller.isSelectionEnabled()
|
||||
? const QuotasFooterWidget()
|
||||
: const SizedBox.shrink(),
|
||||
),
|
||||
Obx(() {
|
||||
if (controller.teamMailboxesIsNotEmpty) {
|
||||
return _buildMailboxCategory(
|
||||
context,
|
||||
MailboxCategories.teamMailboxes,
|
||||
controller.teamMailboxesRootNode
|
||||
);
|
||||
} else {
|
||||
return const SizedBox.shrink();
|
||||
}
|
||||
}),
|
||||
Obx(() {
|
||||
if (controller.isMailboxListScrollable.isFalse) {
|
||||
return const QuotasFooterWidget();
|
||||
} else {
|
||||
return const SizedBox.shrink();
|
||||
}
|
||||
}),
|
||||
])
|
||||
),
|
||||
);
|
||||
@@ -410,71 +419,6 @@ class MailboxView extends GetWidget<MailboxController> {
|
||||
).toList() ?? <Widget>[];
|
||||
}
|
||||
|
||||
Widget _buildInputSearchFormWidget(BuildContext context) {
|
||||
return Padding(
|
||||
padding: const EdgeInsets.only(top: 16, bottom: 16),
|
||||
child: Row(
|
||||
children: [
|
||||
_buildBackSearchButton(context),
|
||||
Expanded(child: (SearchAppBarWidget(
|
||||
_imagePaths,
|
||||
controller.searchQuery.value,
|
||||
controller.searchFocus,
|
||||
controller.searchInputController,
|
||||
hasBackButton: false,
|
||||
hasSearchButton: true)
|
||||
..addPadding(EdgeInsets.zero)
|
||||
..setMargin(const EdgeInsets.only(right: 16))
|
||||
..addDecoration(BoxDecoration(borderRadius: BorderRadius.circular(12), color: AppColor.colorBgSearchBar))
|
||||
..addIconClearText(SvgPicture.asset(_imagePaths.icClearTextSearch, width: 18, height: 18, fit: BoxFit.fill))
|
||||
..setHintText(AppLocalizations.of(context).hint_search_mailboxes)
|
||||
..addOnClearTextSearchAction(() => controller.clearSearchText())
|
||||
..addOnTextChangeSearchAction((query) => controller.searchMailbox(query))
|
||||
..addOnSearchTextAction((query) => controller.searchMailbox(query)))
|
||||
.build())
|
||||
]
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
Widget _buildBackSearchButton(BuildContext context) {
|
||||
return Padding(
|
||||
padding: EdgeInsets.only(left: _responsiveUtils.isLandscapeMobile(context) ? 0 : 5),
|
||||
child: buildIconWeb(
|
||||
onTap: () => controller.disableSearch(),
|
||||
icon: SvgPicture.asset(_imagePaths.icBack, color: AppColor.colorTextButton),
|
||||
));
|
||||
}
|
||||
|
||||
Widget _buildListMailboxSearched(BuildContext context) {
|
||||
return Obx(() => Container(
|
||||
margin: _responsiveUtils.isDesktop(context)
|
||||
? const EdgeInsets.only(left: 16, right: 16)
|
||||
: EdgeInsets.zero,
|
||||
decoration: _responsiveUtils.isDesktop(context)
|
||||
? BoxDecoration(borderRadius: BorderRadius.circular(14), color: Colors.white)
|
||||
: null,
|
||||
child: ListView.builder(
|
||||
padding: EdgeInsets.only(left: _responsiveUtils.isLandscapeMobile(context) ? 0 : 16, right: 8),
|
||||
key: const Key('list_mailbox_searched'),
|
||||
itemCount: controller.listMailboxSearched.length,
|
||||
shrinkWrap: true,
|
||||
primary: false,
|
||||
itemBuilder: (context, index) =>
|
||||
Obx(() => (MailboxSearchTileBuilder(
|
||||
context,
|
||||
_imagePaths,
|
||||
_responsiveUtils,
|
||||
controller.listMailboxSearched[index],
|
||||
allSelectMode: controller.currentSelectMode.value,
|
||||
lastMailboxIdInSearchedList: controller.listMailboxSearched.last.id)
|
||||
..addOnOpenMailboxAction((mailbox) => controller.openMailbox(context, mailbox))
|
||||
..addOnSelectMailboxAction((mailbox) => controller.selectMailboxSearched(context, mailbox)))
|
||||
.build())
|
||||
)
|
||||
));
|
||||
}
|
||||
|
||||
Widget _buildOptionSelectionMailbox(BuildContext context) {
|
||||
return Column(children: [
|
||||
const Divider(color: AppColor.lineItemListColor, height: 1, thickness: 0.2),
|
||||
|
||||
@@ -13,11 +13,9 @@ import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_catego
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_node.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/widgets/mailbox_bottom_sheet_action_tile_builder.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/widgets/mailbox_folder_tile_builder.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/widgets/mailbox_search_tile_builder.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/widgets/user_information_widget_builder.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/widgets/app_dashboard/app_list_dashboard_item.dart';
|
||||
import 'package:tmail_ui_user/features/quotas/presentation/widget/quotas_footer_widget.dart';
|
||||
import 'package:tmail_ui_user/features/thread/presentation/widgets/search_app_bar_widget.dart';
|
||||
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||
import 'package:tmail_ui_user/main/utils/app_config.dart';
|
||||
|
||||
@@ -47,26 +45,16 @@ class MailboxView extends GetWidget<MailboxController> with AppLoaderMixin, Popu
|
||||
color: _responsiveUtils.isDesktop(context)
|
||||
? AppColor.colorBgDesktop
|
||||
: Colors.white,
|
||||
child: Column(children: [
|
||||
Obx(() => controller.isSearchActive()
|
||||
? _buildInputSearchFormWidget(context)
|
||||
: const SizedBox.shrink()),
|
||||
Expanded(child: Obx(() {
|
||||
return Container(
|
||||
color: _responsiveUtils.isDesktop(context)
|
||||
? AppColor.colorBgDesktop
|
||||
: Colors.white,
|
||||
padding: EdgeInsets.zero,
|
||||
child: RefreshIndicator(
|
||||
color: AppColor.primaryColor,
|
||||
onRefresh: () async => controller.refreshAllMailbox(),
|
||||
child: controller.isSearchActive()
|
||||
? _buildListMailboxSearched(
|
||||
context, controller.listMailboxSearched)
|
||||
: _buildListMailbox(context)),
|
||||
);
|
||||
})),
|
||||
]),
|
||||
child: Container(
|
||||
color: _responsiveUtils.isDesktop(context)
|
||||
? AppColor.colorBgDesktop
|
||||
: Colors.white,
|
||||
child: RefreshIndicator(
|
||||
color: AppColor.primaryColor,
|
||||
onRefresh: () async => controller.refreshAllMailbox(),
|
||||
child: _buildListMailbox(context)
|
||||
),
|
||||
),
|
||||
)),
|
||||
const QuotasFooterWidget(),
|
||||
]),
|
||||
@@ -132,9 +120,17 @@ class MailboxView extends GetWidget<MailboxController> with AppLoaderMixin, Popu
|
||||
const SizedBox(height: 8),
|
||||
])
|
||||
: const SizedBox.shrink(),
|
||||
Obx(() => controller.defaultMailboxHasChild
|
||||
? _buildMailboxCategory(context, MailboxCategories.exchange, controller.defaultRootNode)
|
||||
: const SizedBox.shrink()),
|
||||
Obx(() {
|
||||
if (controller.defaultMailboxIsNotEmpty) {
|
||||
return _buildMailboxCategory(
|
||||
context,
|
||||
MailboxCategories.exchange,
|
||||
controller.defaultRootNode
|
||||
);
|
||||
} else {
|
||||
return const SizedBox.shrink();
|
||||
}
|
||||
}),
|
||||
const SizedBox(height: 8),
|
||||
const Divider(color: AppColor.colorDividerMailbox, height: 0.5, thickness: 0.2),
|
||||
const SizedBox(height: 13),
|
||||
@@ -175,7 +171,7 @@ class MailboxView extends GetWidget<MailboxController> with AppLoaderMixin, Popu
|
||||
]),
|
||||
),
|
||||
const SizedBox(height: 8),
|
||||
Obx(() => controller.personalMailboxHasChild
|
||||
Obx(() => controller.personalMailboxIsNotEmpty
|
||||
? Column(
|
||||
children: [
|
||||
_buildHeaderMailboxCategory(context, MailboxCategories.personalMailboxes),
|
||||
@@ -184,7 +180,7 @@ class MailboxView extends GetWidget<MailboxController> with AppLoaderMixin, Popu
|
||||
)
|
||||
: const SizedBox.shrink()),
|
||||
const SizedBox(height: 8),
|
||||
Obx(() => controller.teamMailboxesHasChild
|
||||
Obx(() => controller.teamMailboxesIsNotEmpty
|
||||
? Column(
|
||||
children: [
|
||||
_buildHeaderMailboxCategory(context, MailboxCategories.teamMailboxes),
|
||||
@@ -335,74 +331,6 @@ class MailboxView extends GetWidget<MailboxController> with AppLoaderMixin, Popu
|
||||
}
|
||||
}
|
||||
|
||||
Widget _buildInputSearchFormWidget(BuildContext context) {
|
||||
return Padding(
|
||||
padding: const EdgeInsets.only(top: 16),
|
||||
child: Transform(
|
||||
transform: Matrix4.translationValues(
|
||||
_responsiveUtils.isDesktop(context) ? -10.0 : 0.0,
|
||||
0.0,
|
||||
0.0),
|
||||
child: Row(
|
||||
children: [
|
||||
if (!_responsiveUtils.isDesktop(context))
|
||||
const SizedBox(width: 10),
|
||||
buildIconWeb(
|
||||
iconPadding: EdgeInsets.zero,
|
||||
minSize: 40,
|
||||
splashRadius: 15,
|
||||
icon: SvgPicture.asset(_imagePaths.icBack, color: AppColor.colorTextButton),
|
||||
onTap: () => controller.disableSearch()),
|
||||
Expanded(child: (SearchAppBarWidget(
|
||||
_imagePaths,
|
||||
controller.searchQuery.value,
|
||||
controller.searchFocus,
|
||||
controller.searchInputController,
|
||||
hasBackButton: false,
|
||||
hasSearchButton: true)
|
||||
..addPadding(EdgeInsets.zero)
|
||||
..setMargin(EdgeInsets.only(right: _responsiveUtils.isDesktop(context) ? 8 : 16))
|
||||
..addDecoration(BoxDecoration(borderRadius: BorderRadius.circular(12), color: AppColor.colorBgSearchBar))
|
||||
..addIconClearText(SvgPicture.asset(_imagePaths.icClearTextSearch, width: 16, height: 16, fit: BoxFit.fill))
|
||||
..setHintText(AppLocalizations.of(context).hint_search_mailboxes)
|
||||
..addOnClearTextSearchAction(() => controller.clearSearchText())
|
||||
..addOnTextChangeSearchAction((query) => controller.searchMailbox(query))
|
||||
..addOnSearchTextAction((query) => controller.searchMailbox(query)))
|
||||
.build())
|
||||
]
|
||||
),
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
Widget _buildListMailboxSearched(BuildContext context, List<PresentationMailbox> listMailbox) {
|
||||
return Container(
|
||||
margin: EdgeInsets.zero,
|
||||
color: _responsiveUtils.isDesktop(context) ? AppColor.colorBgDesktop : Colors.white,
|
||||
child: ListView.builder(
|
||||
padding: EdgeInsets.only(
|
||||
right: 16,
|
||||
left: _responsiveUtils.isDesktop(context) ? 0 : 16,
|
||||
bottom: 16,
|
||||
top: _responsiveUtils.isDesktop(context) ? 0 : 16),
|
||||
key: const Key('list_mailbox_searched'),
|
||||
itemCount: listMailbox.length,
|
||||
shrinkWrap: true,
|
||||
primary: false,
|
||||
itemBuilder: (context, index) =>
|
||||
Obx(() => (MailboxSearchTileBuilder(
|
||||
context,
|
||||
_imagePaths,
|
||||
_responsiveUtils,
|
||||
listMailbox[index])
|
||||
..addOnDragEmailToMailboxAccepted(controller.mailboxDashBoardController.dragSelectedMultipleEmailToMailboxAction)
|
||||
..addOnOpenMailboxAction((mailbox) => controller.openMailbox(context, mailbox))
|
||||
..addOnMenuActionClick((position, mailbox) => _openMailboxMenuAction(context, position, mailbox))
|
||||
..addOnSelectMailboxAction((mailbox) => controller.selectMailboxSearched(context, mailbox)))
|
||||
.build()))
|
||||
);
|
||||
}
|
||||
|
||||
Widget _buildVersionInformation(BuildContext context, PackageInfo packageInfo) {
|
||||
return Container(
|
||||
padding: const EdgeInsets.only(top: 4),
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
import 'package:core/presentation/utils/responsive_utils.dart';
|
||||
import 'package:core/utils/app_logger.dart';
|
||||
import 'package:dartz/dartz.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
|
||||
import 'package:model/mailbox/presentation_mailbox.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/extensions/list_mailbox_node_extension.dart';
|
||||
@@ -36,4 +38,16 @@ class MailboxUtils {
|
||||
log('MailboxUtils::generateMapDescendantIdsAndMailboxIdList(): mapDescendantIds: $mapDescendantIds');
|
||||
return Tuple2(mapDescendantIds, allMailboxIds);
|
||||
}
|
||||
|
||||
static EdgeInsets getPaddingListViewMailboxSearched(BuildContext context, ResponsiveUtils responsiveUtils) {
|
||||
if (responsiveUtils.isWebDesktop(context)) {
|
||||
return const EdgeInsets.only(left: 16, right: 16, bottom: 16);
|
||||
} else {
|
||||
if (responsiveUtils.isScreenWithShortestSide(context)) {
|
||||
return const EdgeInsets.all(16);
|
||||
} else {
|
||||
return const EdgeInsets.symmetric(horizontal: 32, vertical: 16);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -41,7 +41,7 @@ class BottomBarSelectionMailboxWidget {
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: [
|
||||
Expanded(child: (ButtonBuilder(_imagePaths.icMove)
|
||||
Expanded(child: (ButtonBuilder(_imagePaths.icMoveMailbox)
|
||||
..key(const Key('button_move_all_mailbox'))
|
||||
..paddingIcon(const EdgeInsets.all(8))
|
||||
..textStyle(TextStyle(
|
||||
@@ -77,7 +77,7 @@ class BottomBarSelectionMailboxWidget {
|
||||
})
|
||||
..text(AppLocalizations.of(_context).rename, isVertical: true))
|
||||
.build()),
|
||||
Expanded(child: (ButtonBuilder(_imagePaths.icRead)
|
||||
Expanded(child: (ButtonBuilder(_imagePaths.icMarkAsRead)
|
||||
..key(const Key('button_mark_read_all_mailbox'))
|
||||
..paddingIcon(const EdgeInsets.all(8))
|
||||
..textStyle(TextStyle(
|
||||
@@ -95,7 +95,7 @@ class BottomBarSelectionMailboxWidget {
|
||||
})
|
||||
..text(AppLocalizations.of(_context).mark_as_read, isVertical: true))
|
||||
.build()),
|
||||
Expanded(child: (ButtonBuilder(_imagePaths.icDelete)
|
||||
Expanded(child: (ButtonBuilder(_imagePaths.icDeleteMailbox)
|
||||
..key(const Key('button_delete_all_mailbox'))
|
||||
..paddingIcon(const EdgeInsets.all(8))
|
||||
..textStyle(TextStyle(
|
||||
|
||||
@@ -72,14 +72,20 @@ class MailBoxFolderTileBuilder {
|
||||
_onLongPressMailboxNodeAction = onLongPressMailboxNodeAction;
|
||||
}
|
||||
|
||||
Widget build() => DragTarget<List<PresentationEmail>>(
|
||||
builder: (context, _, __,) {
|
||||
Widget build() {
|
||||
if (BuildUtils.isWeb) {
|
||||
return DragTarget<List<PresentationEmail>>(
|
||||
builder: (context, _, __,) {
|
||||
return _buildMailboxItem();
|
||||
},
|
||||
onAccept: (emails) {
|
||||
_onDragItemAccepted?.call(emails, _mailboxNode.item);
|
||||
},
|
||||
);
|
||||
} else {
|
||||
return _buildMailboxItem();
|
||||
},
|
||||
onAccept: (emails) {
|
||||
_onDragItemAccepted?.call(emails, _mailboxNode.item);
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Widget _buildMailboxItem() {
|
||||
if (mailboxDisplayed == MailboxDisplayed.mailbox) {
|
||||
@@ -124,35 +130,39 @@ class MailBoxFolderTileBuilder {
|
||||
absorbing: !_mailboxNode.isActivated,
|
||||
child: Opacity(
|
||||
opacity: _mailboxNode.isActivated ? 1.0 : 0.3,
|
||||
child: InkWell(
|
||||
onLongPress: () => _onLongPressMailboxFolderClick?.call(_mailboxNode),
|
||||
onTap: () => allSelectMode == SelectMode.ACTIVE
|
||||
? _onSelectMailboxFolderClick?.call(_mailboxNode)
|
||||
: _onOpenMailboxFolderClick?.call(_mailboxNode),
|
||||
child: ClipRRect(
|
||||
borderRadius: const BorderRadius.all(Radius.circular(14)),
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
Padding(
|
||||
padding: EdgeInsets.symmetric(
|
||||
vertical: _mailboxNode.hasChildren() ? 8 : 15),
|
||||
child: Row(
|
||||
crossAxisAlignment: _mailboxNode.item.isTeamMailboxes
|
||||
? CrossAxisAlignment.start
|
||||
: CrossAxisAlignment.center,
|
||||
children: [
|
||||
_buildLeadingMailboxItem(),
|
||||
const SizedBox(width: 8),
|
||||
Expanded(child: _buildTitleFolderItem()),
|
||||
_buildSelectedIcon(),
|
||||
const SizedBox(width: 8),
|
||||
_buildTrailingMailboxItem()
|
||||
]),
|
||||
),
|
||||
]
|
||||
)
|
||||
child: Material(
|
||||
color: Colors.transparent,
|
||||
child: InkWell(
|
||||
onLongPress: () => _onLongPressMailboxFolderClick?.call(_mailboxNode),
|
||||
onTap: () => allSelectMode == SelectMode.ACTIVE
|
||||
? _onSelectMailboxFolderClick?.call(_mailboxNode)
|
||||
: _onOpenMailboxFolderClick?.call(_mailboxNode),
|
||||
borderRadius: const BorderRadius.all(Radius.circular(8)),
|
||||
child: ClipRRect(
|
||||
borderRadius: const BorderRadius.all(Radius.circular(14)),
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
Padding(
|
||||
padding: EdgeInsets.symmetric(
|
||||
vertical: _mailboxNode.hasChildren() ? 8 : 15),
|
||||
child: Row(
|
||||
crossAxisAlignment: _mailboxNode.item.isTeamMailboxes
|
||||
? CrossAxisAlignment.start
|
||||
: CrossAxisAlignment.center,
|
||||
children: [
|
||||
_buildLeadingMailboxItem(),
|
||||
const SizedBox(width: 8),
|
||||
Expanded(child: _buildTitleFolderItem()),
|
||||
_buildSelectedIcon(),
|
||||
const SizedBox(width: 8),
|
||||
_buildTrailingMailboxItem()
|
||||
]),
|
||||
),
|
||||
]
|
||||
)
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
@@ -148,8 +148,8 @@ class SearchMailboxController extends BaseMailboxController with MailboxActionHa
|
||||
}
|
||||
|
||||
void refreshMailboxChanges({jmap.State? mailboxState}) {
|
||||
dashboardController.dispatchMailboxUIAction(RefreshChangeMailboxAction(null));
|
||||
final newMailboxState = mailboxState ?? currentMailboxState;
|
||||
dashboardController.dispatchMailboxUIAction(RefreshChangeMailboxAction(newMailboxState));
|
||||
final accountId = dashboardController.accountId.value;
|
||||
final session = dashboardController.sessionCurrent;
|
||||
if (session != null && accountId != null && newMailboxState != null) {
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
|
||||
import 'package:core/core.dart';
|
||||
import 'package:core/presentation/extensions/color_extension.dart';
|
||||
import 'package:core/presentation/views/button/icon_button_web.dart';
|
||||
import 'package:core/presentation/views/text/text_field_builder.dart';
|
||||
|
||||
@@ -20,9 +20,7 @@ class SpamReportBannerWidget extends StatelessWidget {
|
||||
}
|
||||
return Container(
|
||||
height: 124,
|
||||
margin: const EdgeInsets.only(
|
||||
top: 12, left: 16, right: 16, bottom: 16
|
||||
),
|
||||
margin: const EdgeInsets.only(left: 16, right: 16, bottom: 16),
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.circular(12),
|
||||
border: Border.all(color: AppColor.colorBorderBodyThread, width: 1),
|
||||
|
||||
Reference in New Issue
Block a user