Fix Scribe on responsive mobile

- Button was not added in MobileResponsiveAppBar
- Mobile behavior related scripts were not correctly added for web composer
- Mobile behavior related scripts return value was not properly handled for web composer
- In responsive web, bottomsheet modal clicks were intercepted by iframe behind
This commit is contained in:
Théo Poizat
2026-02-10 08:27:30 +01:00
committed by Dat H. Pham
parent 46a12745a5
commit 03a03b9088
6 changed files with 99 additions and 54 deletions
@@ -134,6 +134,9 @@ class ComposerView extends GetWidget<ComposerController> {
saveToDraftsAction: () => controller.handleClickSaveAsDraftsButton(context),
saveToTemplateAction: () => controller.handleClickSaveAsTemplateButton(context),
deleteComposerAction: controller.handleClickDeleteComposer,
onOpenAiAssistantModal: controller.isAIScribeAvailable
? controller.openAIAssistantModal
: null,
)),
ConstrainedBox(
constraints: BoxConstraints(
@@ -4,6 +4,7 @@ import 'package:core/presentation/views/button/tmail_button_widget.dart';
import 'package:core/utils/platform_info.dart';
import 'package:custom_pop_up_menu/custom_pop_up_menu.dart';
import 'package:flutter/material.dart';
import 'package:scribe/scribe/ai/presentation/widgets/button/ai_assistant_button.dart';
import 'package:tmail_ui_user/features/base/widget/highlight_svg_icon_on_hover.dart';
import 'package:tmail_ui_user/features/base/widget/popup_item_widget.dart';
import 'package:tmail_ui_user/features/base/widget/popup_menu_overlay_widget.dart';
@@ -32,6 +33,7 @@ class MobileResponsiveAppBarComposerWidget extends StatelessWidget {
final VoidCallback saveToTemplateAction;
final VoidCallback deleteComposerAction;
final VoidCallback toggleMarkAsImportantAction;
final OnOpenAiAssistantModal? onOpenAiAssistantModal;
const MobileResponsiveAppBarComposerWidget({
super.key,
@@ -55,6 +57,7 @@ class MobileResponsiveAppBarComposerWidget extends StatelessWidget {
required this.saveToTemplateAction,
required this.deleteComposerAction,
required this.toggleMarkAsImportantAction,
this.onOpenAiAssistantModal,
});
@override
@@ -74,6 +77,14 @@ class MobileResponsiveAppBarComposerWidget extends StatelessWidget {
onTapActionCallback: onCloseViewAction
),
const Spacer(),
if (onOpenAiAssistantModal != null)
AiAssistantButton(
imagePaths: imagePaths,
margin: const EdgeInsetsDirectional.only(
end: MobileAppBarComposerWidgetStyle.space,
),
onOpenAiAssistantModal: onOpenAiAssistantModal!,
),
TMailButtonWidget.fromIcon(
icon: imagePaths.icRichToolbar,
padding: MobileAppBarComposerWidgetStyle.richTextIconPadding,
@@ -205,6 +205,22 @@ class _WebEditorState extends State<WebEditorWidget> with TextSelectionMixin {
name: HtmlUtils.deleteSelectionContent.name,
script: HtmlUtils.deleteSelectionContent.script,
),
WebScript(
name: HtmlUtils.saveSelection.name,
script: HtmlUtils.saveSelection.script,
),
WebScript(
name: HtmlUtils.restoreSelection.name,
script: HtmlUtils.restoreSelection.script,
),
WebScript(
name: HtmlUtils.getSavedSelection.name,
script: HtmlUtils.getSavedSelection.script,
),
WebScript(
name: HtmlUtils.clearSavedSelection.name,
script: HtmlUtils.clearSavedSelection.script,
),
WebScript(
name: HtmlUtils.recalculateEditorHeight(maxHeight: maxHeight).name,
script: HtmlUtils.recalculateEditorHeight(maxHeight: maxHeight).script,