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/mail/email/email.dart';
|
||||
import 'package:model/email/email_action_type.dart';
|
||||
import 'package:model/email/presentation_email.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 CloseEmailInThreadDetailAction extends EmailUIAction {
|
||||
final EmailId emailId;
|
||||
class CloseEmailInThreadDetailAction extends EmailUIAction {}
|
||||
|
||||
CloseEmailInThreadDetailAction(this.emailId);
|
||||
|
||||
@override
|
||||
List<Object?> get props => [emailId];
|
||||
}
|
||||
class PerformEmailActionInThreadDetailAction extends EmailUIAction {
|
||||
PerformEmailActionInThreadDetailAction({
|
||||
required this.emailActionType,
|
||||
|
||||
@@ -399,12 +399,12 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
||||
action.presentationEmail,
|
||||
);
|
||||
} else if (action is CloseEmailInThreadDetailAction) {
|
||||
if (action.emailId != _currentEmailId) return;
|
||||
if (_currentEmailId == null) return;
|
||||
closeEmailView(context: currentContext);
|
||||
for (var worker in obxListeners) {
|
||||
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 {
|
||||
mailboxDashBoardController.dispatchRoute(DashboardRoutes.thread);
|
||||
}
|
||||
final cleanUpEmailIds = List.from(emailIdsPresentation.keys);
|
||||
for (var emailId in cleanUpEmailIds) {
|
||||
mailboxDashBoardController
|
||||
..dispatchEmailUIAction(CloseEmailInThreadDetailAction(emailId))
|
||||
..dispatchEmailUIAction(EmailUIAction());
|
||||
}
|
||||
mailboxDashBoardController
|
||||
.dispatchEmailUIAction(CloseEmailInThreadDetailAction());
|
||||
Future.delayed(Duration.zero, () {
|
||||
mailboxDashBoardController.dispatchEmailUIAction(EmailUIAction());
|
||||
});
|
||||
|
||||
reset();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user