Skip to content

Commit f0fb43a

Browse files
dab246hoangdat
authored andcommitted
TF-3480 Fix reload multiple times, if composer is in minimize or hide, content maybe lost
Signed-off-by: dab246 <tdvu@linagora.com>
1 parent 826149d commit f0fb43a

File tree

1 file changed

+38
-16
lines changed

1 file changed

+38
-16
lines changed

lib/features/composer/presentation/composer_controller.dart

Lines changed: 38 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ import 'package:tmail_ui_user/features/composer/presentation/model/inline_image.
7474
import 'package:tmail_ui_user/features/composer/presentation/model/prefix_recipient_state.dart';
7575
import 'package:tmail_ui_user/features/composer/presentation/model/screen_display_mode.dart';
7676
import 'package:tmail_ui_user/features/composer/presentation/styles/composer_style.dart';
77+
import 'package:tmail_ui_user/features/composer/presentation/view/editor_view_mixin.dart';
7778
import 'package:tmail_ui_user/features/composer/presentation/widgets/mobile/from_composer_bottom_sheet_builder.dart';
7879
import 'package:tmail_ui_user/features/composer/presentation/widgets/saving_message_dialog_view.dart';
7980
import 'package:tmail_ui_user/features/composer/presentation/widgets/sending_message_dialog_view.dart';
@@ -116,7 +117,7 @@ import 'package:tmail_ui_user/main/routes/route_navigation.dart';
116117
import 'package:tmail_ui_user/main/universal_import/html_stub.dart' as html;
117118

118119
class ComposerController extends BaseController
119-
with DragDropFileMixin, AutoCompleteResultMixin
120+
with DragDropFileMixin, AutoCompleteResultMixin, EditorViewMixin
120121
implements BeforeReconnectHandler {
121122

122123
final mailboxDashBoardController = Get.find<MailboxDashBoardController>();
@@ -213,7 +214,6 @@ class ComposerController extends BaseController
213214

214215
List<Attachment> initialAttachments = <Attachment>[];
215216
String? _textEditorWeb;
216-
String? _initTextEditor;
217217
double? maxWithEditor;
218218
EmailId? _emailIdEditing;
219219
bool isAttachmentCollapsed = false;
@@ -225,6 +225,7 @@ class ComposerController extends BaseController
225225
int? _savedEmailDraftHash;
226226
bool _restoringSignatureButton = false;
227227
GlobalKey? responsiveContainerKey;
228+
Worker? emailContentViewStateWorker;
228229

229230
@visibleForTesting
230231
bool get restoringSignatureButton => _restoringSignatureButton;
@@ -286,7 +287,6 @@ class ComposerController extends BaseController
286287

287288
@override
288289
void onClose() {
289-
_initTextEditor = null;
290290
_textEditorWeb = null;
291291
dispatchState(Right(UIClosedState()));
292292
composerArguments.value = null;
@@ -305,6 +305,8 @@ class ComposerController extends BaseController
305305
responsiveContainerKey = null;
306306
menuMoreOptionController?.dispose();
307307
menuMoreOptionController = null;
308+
emailContentViewStateWorker?.dispose();
309+
emailContentViewStateWorker = null;
308310
} else {
309311
richTextMobileTabletController = null;
310312
}
@@ -441,6 +443,39 @@ class ComposerController extends BaseController
441443
}
442444
});
443445
});
446+
447+
if (PlatformInfo.isWeb) {
448+
emailContentViewStateWorker = ever(emailContentsViewState, (state) {
449+
state?.fold((_) => null, (success) {
450+
if (success is GetEmailContentSuccess) {
451+
onChangeTextEditorWeb(success.htmlEmailContent);
452+
} else if (success is TransformHtmlEmailContentSuccess) {
453+
final arguments = composerArguments.value;
454+
if (arguments == null ||
455+
currentContext == null ||
456+
arguments.presentationEmail == null) return;
457+
458+
final emailActionType = arguments.emailActionType;
459+
460+
if (emailActionType == EmailActionType.reply ||
461+
emailActionType == EmailActionType.replyAll ||
462+
emailActionType == EmailActionType.replyToList ||
463+
emailActionType == EmailActionType.forward) {
464+
465+
final emailContentQuoted = getEmailContentQuotedAsHtml(
466+
locale: Localizations.localeOf(currentContext!),
467+
appLocalizations: AppLocalizations.of(currentContext!),
468+
emailContent: success.htmlContent,
469+
emailActionType: arguments.emailActionType,
470+
presentationEmail: arguments.presentationEmail!
471+
);
472+
473+
onChangeTextEditorWeb(emailContentQuoted);
474+
}
475+
}
476+
});
477+
});
478+
}
444479
}
445480

446481
void _triggerBrowserEventListener() {
@@ -601,9 +636,6 @@ class ComposerController extends BaseController
601636
}
602637

603638
void onCreatedMobileEditorAction(BuildContext context, HtmlEditorApi editorApi, String? content) {
604-
if (identitySelected.value != null) {
605-
initTextEditor(content);
606-
}
607639
richTextMobileTabletController?.htmlEditorApi = editorApi;
608640
richTextMobileTabletController?.richTextController.onCreateHTMLEditor(
609641
editorApi,
@@ -2105,11 +2137,7 @@ class ComposerController extends BaseController
21052137
HtmlEditorApi? get htmlEditorApi => richTextMobileTabletController?.htmlEditorApi;
21062138

21072139
void onChangeTextEditorWeb(String? text) {
2108-
if (identitySelected.value != null) {
2109-
initTextEditor(text);
2110-
}
21112140
_textEditorWeb = text;
2112-
21132141
_initEmailDraftHashAfterSignatureButtonRestored(text);
21142142
}
21152143

@@ -2123,14 +2151,8 @@ class ComposerController extends BaseController
21232151
_initEmailDraftHash();
21242152
}
21252153

2126-
void initTextEditor(String? text) {
2127-
_initTextEditor ??= text;
2128-
}
2129-
21302154
void setSubjectEmail(String subject) => subjectEmail.value = subject;
21312155

2132-
2133-
21342156
void onAttachmentDropZoneListener(Attachment attachment) {
21352157
log('ComposerController::onAttachmentDropZoneListener: attachment = $attachment');
21362158
uploadController.validateTotalSizeAttachmentsBeforeUpload(

0 commit comments

Comments
 (0)