TF-934 Implement search by query when open new tab
This commit is contained in:
@@ -20,6 +20,7 @@ class EmailSupervisorController extends BaseController {
|
||||
int currentIndexPageView = -1;
|
||||
final canGetNewerEmail = true.obs;
|
||||
final canGetOlderEmail = true.obs;
|
||||
final supportedPageView = RxBool(true);
|
||||
|
||||
Rxn<PresentationEmail> get selectedEmail => mailboxDashBoardController.selectedEmail;
|
||||
Session? get sessionCurrent => mailboxDashBoardController.sessionCurrent;
|
||||
@@ -33,8 +34,6 @@ class EmailSupervisorController extends BaseController {
|
||||
}
|
||||
}
|
||||
|
||||
bool get supportedPageView => listEmail.isNotEmpty;
|
||||
|
||||
@override
|
||||
void onClose() {
|
||||
pageController?.dispose();
|
||||
|
||||
@@ -181,10 +181,12 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
||||
if (presentationEmail is PresentationEmail) {
|
||||
if (_currentEmailId != presentationEmail.id) {
|
||||
_currentEmailId = presentationEmail.id;
|
||||
if (emailSupervisorController.supportedPageView) {
|
||||
if (emailSupervisorController.listEmail.isNotEmpty) {
|
||||
emailSupervisorController.supportedPageView.value = true;
|
||||
emailSupervisorController.setCurrentPositionEmailInListEmail(_currentEmailId);
|
||||
_getEmailDeBouncer.value = emailSupervisorController.currentIndexPageView;
|
||||
} else {
|
||||
emailSupervisorController.supportedPageView.value = false;
|
||||
_getEmailContentAction(presentationEmail.id);
|
||||
}
|
||||
_resetToOriginalValue();
|
||||
@@ -364,9 +366,13 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
||||
}
|
||||
|
||||
PresentationMailbox? getMailboxContain(PresentationEmail email) {
|
||||
return mailboxDashBoardController.searchController.isSearchEmailRunning
|
||||
if (mailboxDashBoardController.selectedMailbox.value == null) {
|
||||
return email.findMailboxContain(mailboxDashBoardController.mapMailboxById);
|
||||
} else {
|
||||
return mailboxDashBoardController.searchController.isSearchEmailRunning
|
||||
? email.findMailboxContain(mailboxDashBoardController.mapMailboxById)
|
||||
: mailboxDashBoardController.selectedMailbox.value;
|
||||
}
|
||||
}
|
||||
|
||||
void markAsEmailRead(PresentationEmail presentationEmail, ReadActions readActions) async {
|
||||
@@ -378,6 +384,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
||||
}
|
||||
|
||||
void _markAsEmailReadSuccess(Success success) {
|
||||
log('SingleEmailController::_markAsEmailReadSuccess(): $success');
|
||||
mailboxDashBoardController.dispatchState(Right(success));
|
||||
|
||||
if (success is MarkAsEmailReadSuccess
|
||||
@@ -744,7 +751,8 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
||||
|
||||
void _markAsEmailStarSuccess(Success success) {
|
||||
if (success is MarkAsStarEmailSuccess) {
|
||||
mailboxDashBoardController.setSelectedEmail(success.updatedEmail.toPresentationEmail(selectMode: SelectMode.ACTIVE));
|
||||
final selectedEmail = mailboxDashBoardController.selectedEmail.value;
|
||||
mailboxDashBoardController.setSelectedEmail(selectedEmail?.updateKeywords(success.updatedEmail.keywords));
|
||||
}
|
||||
mailboxDashBoardController.dispatchState(Right(success));
|
||||
}
|
||||
@@ -992,7 +1000,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
||||
|
||||
void closeEmailView(BuildContext context) {
|
||||
log('SingleEmailController::closeEmailView(): ');
|
||||
if (emailSupervisorController.supportedPageView) {
|
||||
if (emailSupervisorController.supportedPageView.isTrue) {
|
||||
emailSupervisorController.presentationEmailsLoaded.removeWhere((e) => e.emailCurrent?.id == currentEmail?.id);
|
||||
emailSupervisorController.currentIndexPageView = -1;
|
||||
_getEmailDeBouncer.value = null;
|
||||
@@ -1015,10 +1023,11 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
||||
}
|
||||
}
|
||||
|
||||
bool get isOpenEmailNotMailboxFromRoute => !emailSupervisorController.supportedPageView
|
||||
bool get isOpenEmailNotMailboxFromRoute => emailSupervisorController.supportedPageView.isFalse
|
||||
&& mailboxDashBoardController.selectedMailbox.value == null;
|
||||
|
||||
void _updateRouteOnBrowser() {
|
||||
log('SingleEmailController::_updateRouteOnBrowser(): isSearchEmailRunning: ${mailboxDashBoardController.searchController.isSearchEmailRunning}');
|
||||
if (BuildUtils.isWeb) {
|
||||
final selectedMailboxId = mailboxDashBoardController.selectedMailbox.value?.id;
|
||||
final route = RouteUtils.generateRouteBrowser(
|
||||
|
||||
@@ -88,9 +88,11 @@ class EmailView extends GetWidget<SingleEmailController> {
|
||||
_buildAppBar(context, email),
|
||||
_buildVacationNotificationMessage(context),
|
||||
const Divider(color: AppColor.colorDividerHorizontal, height: 1),
|
||||
Expanded(child: controller.emailSupervisorController.supportedPageView
|
||||
? _buildMultipleEmailView(controller.emailSupervisorController.listEmail)
|
||||
: _buildSingleEmailView(context, email),
|
||||
Expanded(child: Obx(() {
|
||||
return controller.emailSupervisorController.supportedPageView.isTrue
|
||||
? _buildMultipleEmailView(controller.emailSupervisorController.listEmail)
|
||||
: _buildSingleEmailView(context, email);
|
||||
}),
|
||||
),
|
||||
const Divider(color: AppColor.colorDividerHorizontal, height: 1),
|
||||
_buildBottomBar(context, email),
|
||||
@@ -98,6 +100,7 @@ class EmailView extends GetWidget<SingleEmailController> {
|
||||
}
|
||||
|
||||
Widget _buildMultipleEmailView(List<PresentationEmail> listEmails) {
|
||||
log('EmailView::_buildMultipleEmailView(): ');
|
||||
return PageView.builder(
|
||||
physics: BuildUtils.isWeb ? const NeverScrollableScrollPhysics() : null,
|
||||
itemCount: listEmails.length,
|
||||
@@ -108,6 +111,7 @@ class EmailView extends GetWidget<SingleEmailController> {
|
||||
}
|
||||
|
||||
Widget _buildSingleEmailView(BuildContext context, PresentationEmail email) {
|
||||
log('EmailView::_buildSingleEmailView(): ');
|
||||
return _buildEmailBody(context, email);
|
||||
}
|
||||
|
||||
@@ -144,7 +148,7 @@ class EmailView extends GetWidget<SingleEmailController> {
|
||||
Widget _buildAppBar(BuildContext context, PresentationEmail presentationEmail) {
|
||||
return Obx(() => AppBarMailWidgetBuilder(
|
||||
presentationEmail,
|
||||
currentMailbox: controller.mailboxDashBoardController.selectedMailbox.value,
|
||||
mailboxContain: _getMailboxContain(presentationEmail),
|
||||
isSearchIsRunning: controller.mailboxDashBoardController.searchController.isSearchEmailRunning,
|
||||
onBackActionClick: () => controller.closeEmailView(context),
|
||||
onEmailActionClick: (email, action) =>
|
||||
@@ -161,12 +165,16 @@ class EmailView extends GetWidget<SingleEmailController> {
|
||||
_popupMenuEmailActionTile(context, email));
|
||||
}
|
||||
},
|
||||
optionsWidget: BuildUtils.isWeb && controller.emailSupervisorController.supportedPageView
|
||||
optionsWidget: BuildUtils.isWeb && controller.emailSupervisorController.supportedPageView.isTrue
|
||||
? _buildNavigatorPageViewWidgets(context)
|
||||
: null,
|
||||
));
|
||||
}
|
||||
|
||||
PresentationMailbox? _getMailboxContain(PresentationEmail currentEmail) {
|
||||
return currentEmail.findMailboxContain(controller.mailboxDashBoardController.mapMailboxById);
|
||||
}
|
||||
|
||||
List<Widget> _buildNavigatorPageViewWidgets(BuildContext context) {
|
||||
return [
|
||||
buildIconWeb(
|
||||
|
||||
@@ -16,7 +16,7 @@ class AppBarMailWidgetBuilder extends StatelessWidget {
|
||||
|
||||
final PresentationEmail _presentationEmail;
|
||||
final List<Widget>? optionsWidget;
|
||||
final PresentationMailbox? currentMailbox;
|
||||
final PresentationMailbox? mailboxContain;
|
||||
final bool isSearchIsRunning;
|
||||
final OnBackActionClick? onBackActionClick;
|
||||
final OnEmailActionClick? onEmailActionClick;
|
||||
@@ -26,7 +26,7 @@ class AppBarMailWidgetBuilder extends StatelessWidget {
|
||||
this._presentationEmail,
|
||||
{
|
||||
Key? key,
|
||||
this.currentMailbox,
|
||||
this.mailboxContain,
|
||||
this.onBackActionClick,
|
||||
this.onEmailActionClick,
|
||||
this.onMoreActionClick,
|
||||
@@ -70,7 +70,7 @@ class AppBarMailWidgetBuilder extends StatelessWidget {
|
||||
constraints: BoxConstraints(
|
||||
maxWidth: _responsiveUtils.getSizeScreenWidth(context) - 250),
|
||||
child: Text(
|
||||
currentMailbox?.name?.name.capitalizeFirstEach ?? '',
|
||||
mailboxContain?.name?.name.capitalizeFirstEach ?? '',
|
||||
maxLines: 1,
|
||||
overflow: CommonTextStyle.defaultTextOverFlow,
|
||||
softWrap: CommonTextStyle.defaultSoftWrap,
|
||||
@@ -134,17 +134,17 @@ class AppBarMailWidgetBuilder extends StatelessWidget {
|
||||
buildIconWeb(
|
||||
icon: SvgPicture.asset(
|
||||
_imagePaths.icDeleteComposer,
|
||||
color: currentMailbox?.role != PresentationMailbox.roleTrash
|
||||
color: mailboxContain?.isTrash == false
|
||||
? AppColor.colorTextButton
|
||||
: AppColor.colorDeletePermanentlyButton,
|
||||
width: BuildUtils.isWeb ? 18 : 20,
|
||||
height: BuildUtils.isWeb ? 18 : 20,
|
||||
fit: BoxFit.fill),
|
||||
tooltip: currentMailbox?.role != PresentationMailbox.roleTrash
|
||||
tooltip: mailboxContain?.isTrash == false
|
||||
? AppLocalizations.of(context).move_to_trash
|
||||
: AppLocalizations.of(context).delete_permanently,
|
||||
onTap: () {
|
||||
if (currentMailbox?.role != PresentationMailbox.roleTrash) {
|
||||
if (mailboxContain?.isTrash == false) {
|
||||
onEmailActionClick?.call(
|
||||
_presentationEmail,
|
||||
EmailActionType.moveToTrash);
|
||||
|
||||
Reference in New Issue
Block a user