From fd33ccf5e4bd4fa5711262d9cdf27205fcf5ce38 Mon Sep 17 00:00:00 2001 From: dab246 Date: Thu, 18 Dec 2025 16:43:07 +0700 Subject: [PATCH] feat(ai-scribe): Auto hide `Replace` action when perform prompt in new email without content --- .../modal/ai_scribe_suggestion_widget.dart | 7 ++-- .../ai_scribe_suggestion_success.dart | 3 ++ ...cribe_suggestion_success_list_actions.dart | 33 ++++++++++--------- 3 files changed, 26 insertions(+), 17 deletions(-) diff --git a/scribe/lib/scribe/ai/presentation/widgets/modal/ai_scribe_suggestion_widget.dart b/scribe/lib/scribe/ai/presentation/widgets/modal/ai_scribe_suggestion_widget.dart index 0eb54f7de..988f3c9a0 100644 --- a/scribe/lib/scribe/ai/presentation/widgets/modal/ai_scribe_suggestion_widget.dart +++ b/scribe/lib/scribe/ai/presentation/widgets/modal/ai_scribe_suggestion_widget.dart @@ -86,7 +86,9 @@ class _AiScribeSuggestionWidgetState extends State { AIScribeSizes.suggestionModalMaxHeight, ); - final dialogContent = _buildDialogContent(context); + final hasContent = widget.content?.trim().isNotEmpty == true; + + final dialogContent = _buildDialogContent(context, hasContent); if (!_hasAnchor) { return Center( @@ -128,7 +130,7 @@ class _AiScribeSuggestionWidgetState extends State { ); } - Widget _buildDialogContent(BuildContext context) { + Widget _buildDialogContent(BuildContext context, bool hasContent) { final localizations = ScribeLocalizations.of(context); return Column( @@ -153,6 +155,7 @@ class _AiScribeSuggestionWidgetState extends State { return AiScribeSuggestionSuccess( imagePaths: widget.imagePaths, suggestionText: value.response.result, + hasContent: hasContent, onSelectAction: widget.onSelectAiScribeSuggestionAction, ); } diff --git a/scribe/lib/scribe/ai/presentation/widgets/modal/suggestion/ai_scribe_suggestion_success.dart b/scribe/lib/scribe/ai/presentation/widgets/modal/suggestion/ai_scribe_suggestion_success.dart index a03f038b5..3fd83a466 100644 --- a/scribe/lib/scribe/ai/presentation/widgets/modal/suggestion/ai_scribe_suggestion_success.dart +++ b/scribe/lib/scribe/ai/presentation/widgets/modal/suggestion/ai_scribe_suggestion_success.dart @@ -5,6 +5,7 @@ import 'package:scribe/scribe.dart'; class AiScribeSuggestionSuccess extends StatelessWidget { final ImagePaths imagePaths; final String suggestionText; + final bool hasContent; final OnSelectAiScribeSuggestionAction onSelectAction; const AiScribeSuggestionSuccess({ @@ -12,6 +13,7 @@ class AiScribeSuggestionSuccess extends StatelessWidget { required this.imagePaths, required this.suggestionText, required this.onSelectAction, + this.hasContent = false, }); @override @@ -38,6 +40,7 @@ class AiScribeSuggestionSuccess extends StatelessWidget { AiScribeSuggestionSuccessListActions( imagePaths: imagePaths, suggestionText: suggestionText, + hasContent: hasContent, onSelectAction: onSelectAction, ), ], diff --git a/scribe/lib/scribe/ai/presentation/widgets/modal/suggestion/ai_scribe_suggestion_success_list_actions.dart b/scribe/lib/scribe/ai/presentation/widgets/modal/suggestion/ai_scribe_suggestion_success_list_actions.dart index 963308e20..7482eb3e3 100644 --- a/scribe/lib/scribe/ai/presentation/widgets/modal/suggestion/ai_scribe_suggestion_success_list_actions.dart +++ b/scribe/lib/scribe/ai/presentation/widgets/modal/suggestion/ai_scribe_suggestion_success_list_actions.dart @@ -12,6 +12,7 @@ typedef OnSelectAiScribeSuggestionAction = void Function( class AiScribeSuggestionSuccessListActions extends StatelessWidget { final ImagePaths imagePaths; final String suggestionText; + final bool hasContent; final OnSelectAiScribeSuggestionAction onSelectAction; const AiScribeSuggestionSuccessListActions({ @@ -19,6 +20,7 @@ class AiScribeSuggestionSuccessListActions extends StatelessWidget { required this.imagePaths, required this.suggestionText, required this.onSelectAction, + this.hasContent = false, }); @override @@ -29,23 +31,24 @@ class AiScribeSuggestionSuccessListActions extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.end, spacing: 8, children: [ - Flexible( - child: Container( - constraints: const BoxConstraints(minWidth: 67), - height: 36, - child: ConfirmDialogButton( - label: AiScribeSuggestionActions.replace.getLabel(localizations), - textColor: AppColor.primaryMain, - onTapAction: () { - Navigator.of(context).pop(); - onSelectAction( - AiScribeSuggestionActions.replace, - suggestionText, - ); - }, + if (hasContent) + Flexible( + child: Container( + constraints: const BoxConstraints(minWidth: 67), + height: 36, + child: ConfirmDialogButton( + label: AiScribeSuggestionActions.replace.getLabel(localizations), + textColor: AppColor.primaryMain, + onTapAction: () { + Navigator.of(context).pop(); + onSelectAction( + AiScribeSuggestionActions.replace, + suggestionText, + ); + }, + ), ), ), - ), Flexible( child: Container( constraints: const BoxConstraints(minWidth: 72),