TF-1698 Fix system not redirect correct url when user double click many times to view email in mailbox
(cherry picked from commit 1f205b2d89d6db3b84193e8bd3941a3e310f2a6a)
This commit is contained in:
@@ -1,4 +1,5 @@
|
|||||||
|
|
||||||
|
import 'package:model/mailbox/presentation_mailbox.dart';
|
||||||
import 'package:tmail_ui_user/features/base/action/ui_action.dart';
|
import 'package:tmail_ui_user/features/base/action/ui_action.dart';
|
||||||
import 'package:jmap_dart_client/jmap/core/state.dart' as jmap;
|
import 'package:jmap_dart_client/jmap/core/state.dart' as jmap;
|
||||||
|
|
||||||
@@ -25,4 +26,14 @@ class RefreshChangeMailboxAction extends MailboxUIAction {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
List<Object?> get props => [newState];
|
List<Object?> get props => [newState];
|
||||||
|
}
|
||||||
|
|
||||||
|
class OpenMailboxAction extends MailboxUIAction {
|
||||||
|
|
||||||
|
final PresentationMailbox presentationMailbox;
|
||||||
|
|
||||||
|
OpenMailboxAction(this.presentationMailbox);
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object?> get props => [presentationMailbox];
|
||||||
}
|
}
|
||||||
@@ -129,7 +129,7 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
void onReady() {
|
void onReady() {
|
||||||
_openMailboxEventController.stream.throttleTime(const Duration(milliseconds: 800)).listen((event) {
|
_openMailboxEventController.stream.debounceTime(const Duration(milliseconds: 500)).listen((event) {
|
||||||
_handleOpenMailbox(event.buildContext, event.presentationMailbox);
|
_handleOpenMailbox(event.buildContext, event.presentationMailbox);
|
||||||
});
|
});
|
||||||
_initCollapseMailboxCategories();
|
_initCollapseMailboxCategories();
|
||||||
@@ -251,8 +251,6 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM
|
|||||||
ever(mailboxDashBoardController.dashBoardAction, (action) {
|
ever(mailboxDashBoardController.dashBoardAction, (action) {
|
||||||
if (action is ClearSearchEmailAction) {
|
if (action is ClearSearchEmailAction) {
|
||||||
_switchBackToMailboxDefault();
|
_switchBackToMailboxDefault();
|
||||||
} else if (action is OpenMailboxAction) {
|
|
||||||
openMailbox(action.context, action.presentationMailbox);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -267,6 +265,11 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM
|
|||||||
_refreshMailboxChanges();
|
_refreshMailboxChanges();
|
||||||
}
|
}
|
||||||
mailboxDashBoardController.clearMailboxUIAction();
|
mailboxDashBoardController.clearMailboxUIAction();
|
||||||
|
} else if (action is OpenMailboxAction) {
|
||||||
|
if (currentContext != null) {
|
||||||
|
openMailbox(currentContext!, action.presentationMailbox);
|
||||||
|
}
|
||||||
|
mailboxDashBoardController.clearMailboxUIAction();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,7 +2,6 @@
|
|||||||
import 'package:flutter/cupertino.dart';
|
import 'package:flutter/cupertino.dart';
|
||||||
import 'package:model/email/email_action_type.dart';
|
import 'package:model/email/email_action_type.dart';
|
||||||
import 'package:model/email/presentation_email.dart';
|
import 'package:model/email/presentation_email.dart';
|
||||||
import 'package:model/mailbox/presentation_mailbox.dart';
|
|
||||||
import 'package:tmail_ui_user/features/base/action/ui_action.dart';
|
import 'package:tmail_ui_user/features/base/action/ui_action.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/email_receive_time_type.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/email_receive_time_type.dart';
|
||||||
import 'package:tmail_ui_user/features/thread/domain/model/filter_message_option.dart';
|
import 'package:tmail_ui_user/features/thread/domain/model/filter_message_option.dart';
|
||||||
@@ -126,16 +125,6 @@ class SearchEmailByQueryAction extends DashBoardAction {
|
|||||||
@override
|
@override
|
||||||
List<Object?> get props => [navigationRouter];
|
List<Object?> get props => [navigationRouter];
|
||||||
}
|
}
|
||||||
class OpenMailboxAction extends DashBoardAction {
|
|
||||||
|
|
||||||
final BuildContext context;
|
|
||||||
final PresentationMailbox presentationMailbox;
|
|
||||||
|
|
||||||
OpenMailboxAction(this.context, this.presentationMailbox);
|
|
||||||
|
|
||||||
@override
|
|
||||||
List<Object?> get props => [context, presentationMailbox];
|
|
||||||
}
|
|
||||||
|
|
||||||
class SelectDateRangeToAdvancedSearch extends DashBoardAction {
|
class SelectDateRangeToAdvancedSearch extends DashBoardAction {
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -1564,8 +1564,8 @@ class MailboxDashBoardController extends ReloadableController {
|
|||||||
emailsInCurrentMailbox.value = newEmailList;
|
emailsInCurrentMailbox.value = newEmailList;
|
||||||
}
|
}
|
||||||
|
|
||||||
void openMailboxAction(BuildContext context, PresentationMailbox presentationMailbox) {
|
void openMailboxAction(PresentationMailbox presentationMailbox) {
|
||||||
dispatchAction(OpenMailboxAction(context, presentationMailbox));
|
dispatchMailboxUIAction(OpenMailboxAction(presentationMailbox));
|
||||||
}
|
}
|
||||||
|
|
||||||
bool get enableSpamReport => spamReportController.enableSpamReport;
|
bool get enableSpamReport => spamReportController.enableSpamReport;
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
import 'package:core/presentation/state/failure.dart';
|
import 'package:core/presentation/state/failure.dart';
|
||||||
import 'package:core/presentation/state/success.dart';
|
import 'package:core/presentation/state/success.dart';
|
||||||
import 'package:flutter/material.dart';
|
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:jmap_dart_client/jmap/account_id.dart';
|
import 'package:jmap_dart_client/jmap/account_id.dart';
|
||||||
import 'package:jmap_dart_client/jmap/core/session/session.dart';
|
import 'package:jmap_dart_client/jmap/core/session/session.dart';
|
||||||
@@ -107,10 +106,10 @@ class SpamReportController extends BaseController {
|
|||||||
|
|
||||||
bool get enableSpamReport => _spamReportState.value == SpamReportState.enabled;
|
bool get enableSpamReport => _spamReportState.value == SpamReportState.enabled;
|
||||||
|
|
||||||
void openMailbox(BuildContext context) {
|
void openMailbox() {
|
||||||
final mailboxDashBoardController = Get.find<MailboxDashBoardController>();
|
final mailboxDashBoardController = Get.find<MailboxDashBoardController>();
|
||||||
_storeLastTimeDismissedSpamReportedAction();
|
_storeLastTimeDismissedSpamReportedAction();
|
||||||
mailboxDashBoardController.openMailboxAction(context, _presentationSpamMailbox.value!);
|
mailboxDashBoardController.openMailboxAction(_presentationSpamMailbox.value!);
|
||||||
}
|
}
|
||||||
|
|
||||||
void storeSpamReportStateAction(SpamReportState spamReportState) {
|
void storeSpamReportStateAction(SpamReportState spamReportState) {
|
||||||
|
|||||||
+1
-1
@@ -72,7 +72,7 @@ class SpamReportBannerWebWidget extends StatelessWidget {
|
|||||||
fontWeight: FontWeight.w400),
|
fontWeight: FontWeight.w400),
|
||||||
backgroundColor: AppColor.colorCreateNewIdentityButton,
|
backgroundColor: AppColor.colorCreateNewIdentityButton,
|
||||||
radius: 10,
|
radius: 10,
|
||||||
onTap: () => spamReportController.openMailbox(context),
|
onTap: spamReportController.openMailbox,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -431,7 +431,7 @@ class SearchMailboxController extends BaseMailboxController with MailboxActionHa
|
|||||||
|
|
||||||
void openMailboxAction(BuildContext context, PresentationMailbox mailbox) {
|
void openMailboxAction(BuildContext context, PresentationMailbox mailbox) {
|
||||||
KeyboardUtils.hideKeyboard(context);
|
KeyboardUtils.hideKeyboard(context);
|
||||||
dashboardController.openMailboxAction(context, mailbox);
|
dashboardController.openMailboxAction(mailbox);
|
||||||
|
|
||||||
if (!responsiveUtils.isWebDesktop(context)) {
|
if (!responsiveUtils.isWebDesktop(context)) {
|
||||||
closeSearchView(context);
|
closeSearchView(context);
|
||||||
|
|||||||
@@ -64,7 +64,7 @@ class SpamReportBannerWidget extends StatelessWidget {
|
|||||||
context,
|
context,
|
||||||
AppLocalizations.of(context).showDetails,
|
AppLocalizations.of(context).showDetails,
|
||||||
AppColor.primaryColor,
|
AppColor.primaryColor,
|
||||||
() => spamReportController.openMailbox(context)),
|
spamReportController.openMailbox),
|
||||||
),
|
),
|
||||||
const SizedBox(
|
const SizedBox(
|
||||||
width: 8,
|
width: 8,
|
||||||
|
|||||||
Reference in New Issue
Block a user