TF-3715 Thread Detail Fix concurrent modification during iteration
This commit is contained in:
@@ -1,6 +1,5 @@
|
|||||||
|
|
||||||
import 'package:jmap_dart_client/jmap/core/state.dart' as jmap;
|
import 'package:jmap_dart_client/jmap/core/state.dart' as jmap;
|
||||||
import 'package:jmap_dart_client/jmap/mail/email/email.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:tmail_ui_user/features/base/action/ui_action.dart';
|
import 'package:tmail_ui_user/features/base/action/ui_action.dart';
|
||||||
@@ -33,14 +32,8 @@ class ShowEmailContentViewAction extends EmailUIAction {}
|
|||||||
|
|
||||||
class RefreshAllEmailAction extends EmailUIAction {}
|
class RefreshAllEmailAction extends EmailUIAction {}
|
||||||
|
|
||||||
class CloseEmailInThreadDetailAction extends EmailUIAction {
|
class CloseEmailInThreadDetailAction extends EmailUIAction {}
|
||||||
final EmailId emailId;
|
|
||||||
|
|
||||||
CloseEmailInThreadDetailAction(this.emailId);
|
|
||||||
|
|
||||||
@override
|
|
||||||
List<Object?> get props => [emailId];
|
|
||||||
}
|
|
||||||
class PerformEmailActionInThreadDetailAction extends EmailUIAction {
|
class PerformEmailActionInThreadDetailAction extends EmailUIAction {
|
||||||
PerformEmailActionInThreadDetailAction({
|
PerformEmailActionInThreadDetailAction({
|
||||||
required this.emailActionType,
|
required this.emailActionType,
|
||||||
|
|||||||
@@ -399,12 +399,12 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
|||||||
action.presentationEmail,
|
action.presentationEmail,
|
||||||
);
|
);
|
||||||
} else if (action is CloseEmailInThreadDetailAction) {
|
} else if (action is CloseEmailInThreadDetailAction) {
|
||||||
if (action.emailId != _currentEmailId) return;
|
if (_currentEmailId == null) return;
|
||||||
closeEmailView(context: currentContext);
|
closeEmailView(context: currentContext);
|
||||||
for (var worker in obxListeners) {
|
for (var worker in obxListeners) {
|
||||||
worker.dispose();
|
worker.dispose();
|
||||||
}
|
}
|
||||||
Get.delete<SingleEmailController>(tag: _currentEmailId?.id.value);
|
Get.delete<SingleEmailController>(tag: _currentEmailId!.id.value);
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
|||||||
@@ -10,12 +10,11 @@ extension CloseThreadDetailAction on ThreadDetailController {
|
|||||||
} else {
|
} else {
|
||||||
mailboxDashBoardController.dispatchRoute(DashboardRoutes.thread);
|
mailboxDashBoardController.dispatchRoute(DashboardRoutes.thread);
|
||||||
}
|
}
|
||||||
final cleanUpEmailIds = List.from(emailIdsPresentation.keys);
|
mailboxDashBoardController
|
||||||
for (var emailId in cleanUpEmailIds) {
|
.dispatchEmailUIAction(CloseEmailInThreadDetailAction());
|
||||||
mailboxDashBoardController
|
Future.delayed(Duration.zero, () {
|
||||||
..dispatchEmailUIAction(CloseEmailInThreadDetailAction(emailId))
|
mailboxDashBoardController.dispatchEmailUIAction(EmailUIAction());
|
||||||
..dispatchEmailUIAction(EmailUIAction());
|
});
|
||||||
}
|
|
||||||
|
|
||||||
reset();
|
reset();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user