TF-1270 Sync route path and mailbox contain for list email after fetched
This commit is contained in:
@@ -50,12 +50,11 @@ import 'package:tmail_ui_user/features/thread/domain/state/search_email_state.da
|
||||
import 'package:tmail_ui_user/features/thread/domain/state/search_more_email_state.dart';
|
||||
import 'package:tmail_ui_user/features/thread/domain/usecases/search_email_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/thread/domain/usecases/search_more_email_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/thread/presentation/extensions/list_presentation_email_extensions.dart';
|
||||
import 'package:tmail_ui_user/features/thread/presentation/mixin/email_action_controller.dart';
|
||||
import 'package:tmail_ui_user/features/thread/presentation/model/delete_action_type.dart';
|
||||
import 'package:tmail_ui_user/main/routes/app_routes.dart';
|
||||
import 'package:tmail_ui_user/main/routes/navigation_router.dart';
|
||||
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
||||
import 'package:tmail_ui_user/main/routes/route_utils.dart';
|
||||
|
||||
class SearchEmailController extends BaseController
|
||||
with EmailActionController {
|
||||
@@ -232,7 +231,11 @@ class SearchEmailController extends BaseController
|
||||
final emailsAfterChanges = resultEmailSearchList;
|
||||
final newListEmail = emailsAfterChanges.combine(emailsBeforeChanges);
|
||||
|
||||
listResultSearch.value = newListEmail;
|
||||
listResultSearch.value = newListEmail.syncPresentationEmail(
|
||||
mapMailboxById: mailboxDashBoardController.mapMailboxById,
|
||||
searchQuery: searchQuery,
|
||||
isSearchEmailRunning: true
|
||||
);
|
||||
listResultSearch.refresh();
|
||||
}
|
||||
|
||||
@@ -295,7 +298,11 @@ class SearchEmailController extends BaseController
|
||||
final emailsAfterChanges = resultEmailSearchList;
|
||||
final newListEmail = emailsAfterChanges.combine(emailsBeforeChanges);
|
||||
|
||||
listResultSearch.value = newListEmail;
|
||||
listResultSearch.value = newListEmail.syncPresentationEmail(
|
||||
mapMailboxById: mailboxDashBoardController.mapMailboxById,
|
||||
searchQuery: searchQuery,
|
||||
isSearchEmailRunning: true
|
||||
);
|
||||
|
||||
if (resultSearchScrollController.hasClients) {
|
||||
resultSearchScrollController.animateTo(
|
||||
@@ -336,7 +343,12 @@ class SearchEmailController extends BaseController
|
||||
final resultEmailSearchList = success.emailList
|
||||
.map((email) => email.toSearchPresentationEmail(mailboxDashBoardController.mapMailboxById))
|
||||
.where((email) => !listResultSearch.contains(email))
|
||||
.toList();
|
||||
.toList()
|
||||
.syncPresentationEmail(
|
||||
mapMailboxById: mailboxDashBoardController.mapMailboxById,
|
||||
searchQuery: searchQuery,
|
||||
isSearchEmailRunning: true
|
||||
);
|
||||
listResultSearch.addAll(resultEmailSearchList);
|
||||
} else {
|
||||
canSearchMore = false;
|
||||
@@ -646,7 +658,7 @@ class SearchEmailController extends BaseController
|
||||
if (mailboxContain?.isDrafts == true) {
|
||||
editEmail(selectedEmail);
|
||||
} else {
|
||||
previewEmail(context, selectedEmail);
|
||||
previewEmail(selectedEmail);
|
||||
}
|
||||
break;
|
||||
case EmailActionType.selection:
|
||||
@@ -771,23 +783,6 @@ class SearchEmailController extends BaseController
|
||||
}
|
||||
}
|
||||
|
||||
PresentationEmail generateEmailByPlatform(PresentationEmail currentEmail) {
|
||||
if (BuildUtils.isWeb) {
|
||||
final route = RouteUtils.generateRouteBrowser(
|
||||
AppRoutes.dashboard,
|
||||
NavigationRouter(
|
||||
emailId: currentEmail.id,
|
||||
searchQuery: searchQuery,
|
||||
dashboardType: DashboardType.search
|
||||
)
|
||||
);
|
||||
final emailOnWeb = currentEmail.withRouteWeb(route);
|
||||
return emailOnWeb;
|
||||
} else {
|
||||
return currentEmail;
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
void onClose() {
|
||||
textInputSearchController.dispose();
|
||||
|
||||
@@ -421,20 +421,19 @@ class SearchEmailView extends GetWidget<SearchEmailController>
|
||||
itemExtent: _getItemExtent(context),
|
||||
itemCount: listPresentationEmail.length,
|
||||
itemBuilder: (context, index) {
|
||||
final mailboxContain = _getMailboxContain(listPresentationEmail[index]);
|
||||
final newPresentationEmail = controller.generateEmailByPlatform(listPresentationEmail[index]);
|
||||
final currentPresentationEmail = listPresentationEmail[index];
|
||||
return Obx(() => (EmailTileBuilder(
|
||||
context,
|
||||
newPresentationEmail,
|
||||
currentPresentationEmail,
|
||||
controller.selectionMode.value,
|
||||
controller.searchQuery,
|
||||
controller.mailboxDashBoardController.selectedEmail.value?.id == newPresentationEmail.id,
|
||||
controller.mailboxDashBoardController.selectedEmail.value?.id == currentPresentationEmail.id,
|
||||
isSearchEmailRunning: true,
|
||||
padding: SearchEmailUtils.getPaddingSearchResultList(context, _responsiveUtils),
|
||||
paddingDivider: SearchEmailUtils.getPaddingDividerSearchResultList(context, _responsiveUtils),
|
||||
mailboxContain: mailboxContain)
|
||||
mailboxContain: currentPresentationEmail.mailboxContain)
|
||||
..addOnPressEmailActionClick((action, email) =>
|
||||
controller.pressEmailAction(context, action, email, mailboxContain: mailboxContain))
|
||||
controller.pressEmailAction(context, action, email, mailboxContain: currentPresentationEmail.mailboxContain))
|
||||
..addOnMoreActionClick((email, position) => _responsiveUtils.isScreenWithShortestSide(context)
|
||||
? controller.openContextMenuAction(context, _contextMenuActionTile(context, email))
|
||||
: controller.openPopupMenuAction(context, position, _popupMenuActionTile(context, email)))
|
||||
@@ -443,10 +442,6 @@ class SearchEmailView extends GetWidget<SearchEmailController>
|
||||
);
|
||||
}
|
||||
|
||||
PresentationMailbox? _getMailboxContain(PresentationEmail currentEmail) {
|
||||
return currentEmail.findMailboxContain(controller.mailboxDashBoardController.mapMailboxById);
|
||||
}
|
||||
|
||||
double? _getItemExtent(BuildContext context) {
|
||||
if (BuildUtils.isWeb) {
|
||||
return _responsiveUtils.isDesktop(context) ? 52 : 95;
|
||||
@@ -472,7 +467,7 @@ class SearchEmailView extends GetWidget<SearchEmailController>
|
||||
}
|
||||
|
||||
Widget _markAsEmailSpamOrUnSpamAction(BuildContext context, PresentationEmail email) {
|
||||
final mailboxContain = _getMailboxContain(email);
|
||||
final mailboxContain = email.mailboxContain;
|
||||
|
||||
return (EmailActionCupertinoActionSheetActionBuilder(
|
||||
const Key('mark_as_spam_or_un_spam_action'),
|
||||
|
||||
Reference in New Issue
Block a user