From 245dfc714dde5d0d91fd5b19b6618bdd6fa6199a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20Poizat?= Date: Wed, 7 Jan 2026 16:18:20 +0100 Subject: [PATCH] Display sparkle button in mobile app bar to launch AI Scribe - Same icon than for desktop - Displayed only if AI Scribe is enabled --- .../composer/presentation/composer_view.dart | 6 ++++++ .../widgets/mobile/app_bar_composer_widget.dart | 12 ++++++++++++ .../mobile/landscape_app_bar_composer_widget.dart | 12 ++++++++++++ 3 files changed, 30 insertions(+) diff --git a/lib/features/composer/presentation/composer_view.dart b/lib/features/composer/presentation/composer_view.dart index 1fe3c7fb6..e51705a62 100644 --- a/lib/features/composer/presentation/composer_view.dart +++ b/lib/features/composer/presentation/composer_view.dart @@ -66,6 +66,9 @@ class ComposerView extends GetWidget { controller.handleOpenContextMenu(context, position); }, isNetworkConnectionAvailable: controller.isNetworkConnectionAvailable, + onOpenAiAssistantModal: controller.isAIScribeAvailable + ? controller.openAIAssistantModal + : null, attachFileAction: () => controller.openPickAttachmentMenu( context, _pickAttachmentsActionTiles(context) @@ -87,6 +90,9 @@ class ComposerView extends GetWidget { controller.handleOpenContextMenu(context, position); }, isNetworkConnectionAvailable: controller.isNetworkConnectionAvailable, + onOpenAiAssistantModal: controller.isAIScribeAvailable + ? controller.openAIAssistantModal + : null, attachFileAction: () => controller.openPickAttachmentMenu( context, _pickAttachmentsActionTiles(context) diff --git a/lib/features/composer/presentation/widgets/mobile/app_bar_composer_widget.dart b/lib/features/composer/presentation/widgets/mobile/app_bar_composer_widget.dart index f0159c87e..4c8dfddd3 100644 --- a/lib/features/composer/presentation/widgets/mobile/app_bar_composer_widget.dart +++ b/lib/features/composer/presentation/widgets/mobile/app_bar_composer_widget.dart @@ -1,6 +1,7 @@ import 'package:core/presentation/resources/image_paths.dart'; import 'package:core/presentation/views/button/tmail_button_widget.dart'; import 'package:flutter/material.dart'; +import 'package:scribe/scribe/ai/presentation/widgets/button/ai_assistant_button.dart'; import 'package:tmail_ui_user/features/composer/presentation/styles/mobile_app_bar_composer_widget_style.dart'; import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; @@ -17,6 +18,7 @@ class AppBarComposerWidget extends StatelessWidget { final VoidCallback? insertImageAction; final VoidCallback openRichToolbarAction; final OnOpenContextMenuAction openContextMenuAction; + final OnOpenAiAssistantModal? onOpenAiAssistantModal; const AppBarComposerWidget({ super.key, @@ -29,6 +31,7 @@ class AppBarComposerWidget extends StatelessWidget { this.isNetworkConnectionAvailable = false, this.attachFileAction, this.insertImageAction, + this.onOpenAiAssistantModal, }); @override @@ -48,6 +51,15 @@ class AppBarComposerWidget extends StatelessWidget { onTapActionCallback: onCloseViewAction ), const Spacer(), + if (onOpenAiAssistantModal != null) + AiAssistantButton( + imagePaths: imagePaths, + margin: const EdgeInsetsDirectional.only( + start: MobileAppBarComposerWidgetStyle.space, + end: MobileAppBarComposerWidgetStyle.space, + ), + onOpenAiAssistantModal: onOpenAiAssistantModal!, + ), TMailButtonWidget.fromIcon( icon: imagePaths.icRichToolbar, iconColor: MobileAppBarComposerWidgetStyle.iconColor, diff --git a/lib/features/composer/presentation/widgets/mobile/landscape_app_bar_composer_widget.dart b/lib/features/composer/presentation/widgets/mobile/landscape_app_bar_composer_widget.dart index 459dc9d87..9018cb1a3 100644 --- a/lib/features/composer/presentation/widgets/mobile/landscape_app_bar_composer_widget.dart +++ b/lib/features/composer/presentation/widgets/mobile/landscape_app_bar_composer_widget.dart @@ -1,6 +1,7 @@ import 'package:core/presentation/resources/image_paths.dart'; import 'package:core/presentation/views/button/tmail_button_widget.dart'; import 'package:flutter/material.dart'; +import 'package:scribe/scribe/ai/presentation/widgets/button/ai_assistant_button.dart'; import 'package:tmail_ui_user/features/composer/presentation/styles/mobile_app_bar_composer_widget_style.dart'; import 'package:tmail_ui_user/features/composer/presentation/widgets/mobile/app_bar_composer_widget.dart'; import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; @@ -16,6 +17,7 @@ class LandscapeAppBarComposerWidget extends StatelessWidget { final VoidCallback? insertImageAction; final VoidCallback openRichToolbarAction; final OnOpenContextMenuAction openContextMenuAction; + final OnOpenAiAssistantModal? onOpenAiAssistantModal; const LandscapeAppBarComposerWidget({ super.key, @@ -28,6 +30,7 @@ class LandscapeAppBarComposerWidget extends StatelessWidget { this.isNetworkConnectionAvailable = false, this.attachFileAction, this.insertImageAction, + this.onOpenAiAssistantModal, }); @override @@ -50,6 +53,15 @@ class LandscapeAppBarComposerWidget extends StatelessWidget { onTapActionCallback: onCloseViewAction ), const Spacer(), + if (onOpenAiAssistantModal != null) + AiAssistantButton( + imagePaths: imagePaths, + margin: const EdgeInsetsDirectional.only( + start: MobileAppBarComposerWidgetStyle.space, + end: MobileAppBarComposerWidgetStyle.space, + ), + onOpenAiAssistantModal: onOpenAiAssistantModal!, + ), TMailButtonWidget.fromIcon( icon: imagePaths.icRichToolbar, iconColor: MobileAppBarComposerWidgetStyle.iconColor,