From eecac6c46da7521a5c617b03c9eb2be6d5ca27ee Mon Sep 17 00:00:00 2001 From: dab246 Date: Mon, 18 Jul 2022 13:45:55 +0700 Subject: [PATCH] TF-61 Add RichTextWebController to handle rich text on composer web --- .../controller/rich_text_web_controller.dart | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 lib/features/composer/presentation/controller/rich_text_web_controller.dart diff --git a/lib/features/composer/presentation/controller/rich_text_web_controller.dart b/lib/features/composer/presentation/controller/rich_text_web_controller.dart new file mode 100644 index 000000000..492c07766 --- /dev/null +++ b/lib/features/composer/presentation/controller/rich_text_web_controller.dart @@ -0,0 +1,44 @@ + +import 'package:core/utils/app_logger.dart'; +import 'package:get/get.dart'; +import 'package:html_editor_enhanced/html_editor.dart'; +import 'package:tmail_ui_user/features/composer/presentation/model/rich_text_style_type.dart'; + +class RichTextWebController extends GetxController { + + final editorController = HtmlEditorController(processNewLineAsBr: true); + + final listTextStyleApply = RxList(); + + void onEditorSettingsChange(EditorSettings settings) { + log('RichTextWebController::onEditorSettingsChange():'); + listTextStyleApply.clear(); + if (settings.isBold) { + listTextStyleApply.add(RichTextStyleType.bold); + } + + if (settings.isItalic) { + listTextStyleApply.add(RichTextStyleType.italic); + } + + if (settings.isUnderline) { + listTextStyleApply.add(RichTextStyleType.underline); + } + } + + void applyRichTextStyle(RichTextStyleType textStyleType) { + editorController.execCommand(textStyleType.commandAction); + _selectTextStyleType(textStyleType); + } + + void _selectTextStyleType(RichTextStyleType textStyleType) { + if (listTextStyleApply.contains(textStyleType)) { + listTextStyleApply.remove(textStyleType); + } else { + listTextStyleApply.add(textStyleType); + } + } + + bool isTextStyleTypeSelected(RichTextStyleType richTextStyleType) => + listTextStyleApply.contains(richTextStyleType); +} \ No newline at end of file