Create an isAIScribeAvailable method
Check JMAP capability AND if AI is enabled in env.file and use this method everywhere where we checked env.file
This commit is contained in:
@@ -268,6 +268,12 @@ class ComposerController extends BaseController
|
|||||||
String get ownEmailAddress =>
|
String get ownEmailAddress =>
|
||||||
mailboxDashBoardController.ownEmailAddress.value;
|
mailboxDashBoardController.ownEmailAddress.value;
|
||||||
|
|
||||||
|
@override
|
||||||
|
Session? get session => mailboxDashBoardController.sessionCurrent;
|
||||||
|
|
||||||
|
@override
|
||||||
|
AccountId? get accountId => mailboxDashBoardController.accountId.value;
|
||||||
|
|
||||||
late Worker uploadInlineImageWorker;
|
late Worker uploadInlineImageWorker;
|
||||||
late bool _isEmailBodyLoaded;
|
late bool _isEmailBodyLoaded;
|
||||||
|
|
||||||
|
|||||||
@@ -34,7 +34,6 @@ import 'package:tmail_ui_user/features/composer/presentation/widgets/recipient_c
|
|||||||
import 'package:tmail_ui_user/features/composer/presentation/widgets/subject_composer_widget.dart';
|
import 'package:tmail_ui_user/features/composer/presentation/widgets/subject_composer_widget.dart';
|
||||||
import 'package:tmail_ui_user/features/composer/presentation/widgets/web/from_composer_drop_down_widget.dart';
|
import 'package:tmail_ui_user/features/composer/presentation/widgets/web/from_composer_drop_down_widget.dart';
|
||||||
import 'package:tmail_ui_user/features/email/presentation/widgets/view_entire_message_with_message_clipped_widget.dart';
|
import 'package:tmail_ui_user/features/email/presentation/widgets/view_entire_message_with_message_clipped_widget.dart';
|
||||||
import 'package:scribe/scribe.dart';
|
|
||||||
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||||
|
|
||||||
class ComposerView extends GetWidget<ComposerController> {
|
class ComposerView extends GetWidget<ComposerController> {
|
||||||
@@ -470,8 +469,8 @@ class ComposerView extends GetWidget<ComposerController> {
|
|||||||
sendMessageAction: () => controller.handleClickSendButton(context),
|
sendMessageAction: () => controller.handleClickSendButton(context),
|
||||||
requestReadReceiptAction: () => controller.toggleRequestReadReceipt(context),
|
requestReadReceiptAction: () => controller.toggleRequestReadReceipt(context),
|
||||||
toggleMarkAsImportantAction: () => controller.toggleMarkAsImportant(context),
|
toggleMarkAsImportantAction: () => controller.toggleMarkAsImportant(context),
|
||||||
onOpenAIScribe: AIConfig.isAiEnabled ? () => controller.showAIScribeMenuForFullText(context) : null,
|
onOpenAIScribe: controller.isAIScribeAvailable ? () => controller.showAIScribeMenuForFullText(context) : null,
|
||||||
aiScribeButtonKey: AIConfig.isAiEnabled ? controller.aiScribeButtonKey : null,
|
aiScribeButtonKey: controller.isAIScribeAvailable ? controller.aiScribeButtonKey : null,
|
||||||
)),
|
)),
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
@@ -556,7 +555,7 @@ class ComposerView extends GetWidget<ComposerController> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Widget _buildAIScribeSelectionButton(BuildContext context) {
|
Widget _buildAIScribeSelectionButton(BuildContext context) {
|
||||||
if (!AIConfig.isAiEnabled) {
|
if (!controller.isAIScribeAvailable) {
|
||||||
return const SizedBox.shrink();
|
return const SizedBox.shrink();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -30,7 +30,6 @@ import 'package:tmail_ui_user/features/composer/presentation/widgets/list_recipi
|
|||||||
import 'package:tmail_ui_user/features/composer/presentation/widgets/mobile/from_composer_mobile_widget.dart';
|
import 'package:tmail_ui_user/features/composer/presentation/widgets/mobile/from_composer_mobile_widget.dart';
|
||||||
import 'package:tmail_ui_user/features/composer/presentation/widgets/recipient_composer_widget.dart';
|
import 'package:tmail_ui_user/features/composer/presentation/widgets/recipient_composer_widget.dart';
|
||||||
import 'package:tmail_ui_user/features/composer/presentation/widgets/subject_composer_widget.dart';
|
import 'package:tmail_ui_user/features/composer/presentation/widgets/subject_composer_widget.dart';
|
||||||
import 'package:scribe/scribe.dart';
|
|
||||||
import 'package:tmail_ui_user/features/composer/presentation/widgets/web/attachment_composer_widget.dart';
|
import 'package:tmail_ui_user/features/composer/presentation/widgets/web/attachment_composer_widget.dart';
|
||||||
import 'package:tmail_ui_user/features/composer/presentation/widgets/web/attachment_drop_zone_widget.dart';
|
import 'package:tmail_ui_user/features/composer/presentation/widgets/web/attachment_drop_zone_widget.dart';
|
||||||
import 'package:tmail_ui_user/features/composer/presentation/widgets/web/bottom_bar_composer_widget.dart';
|
import 'package:tmail_ui_user/features/composer/presentation/widgets/web/bottom_bar_composer_widget.dart';
|
||||||
@@ -560,8 +559,8 @@ class ComposerView extends GetWidget<ComposerController> {
|
|||||||
toggleMarkAsImportantAction: () => controller.toggleMarkAsImportant(context),
|
toggleMarkAsImportantAction: () => controller.toggleMarkAsImportant(context),
|
||||||
saveAsTemplateAction: () => controller.handleClickSaveAsTemplateButton(context),
|
saveAsTemplateAction: () => controller.handleClickSaveAsTemplateButton(context),
|
||||||
onOpenInsertLink: controller.openInsertLink,
|
onOpenInsertLink: controller.openInsertLink,
|
||||||
onOpenAIScribe: AIConfig.isAiEnabled ? () => controller.showAIScribeMenuForFullText(context) : null,
|
onOpenAIScribe: controller.isAIScribeAvailable ? () => controller.showAIScribeMenuForFullText(context) : null,
|
||||||
aiScribeButtonKey: AIConfig.isAiEnabled ? controller.aiScribeButtonKey : null,
|
aiScribeButtonKey: controller.isAIScribeAvailable ? controller.aiScribeButtonKey : null,
|
||||||
)),
|
)),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
@@ -836,8 +835,8 @@ class ComposerView extends GetWidget<ComposerController> {
|
|||||||
toggleMarkAsImportantAction: () => controller.toggleMarkAsImportant(context),
|
toggleMarkAsImportantAction: () => controller.toggleMarkAsImportant(context),
|
||||||
saveAsTemplateAction: () => controller.handleClickSaveAsTemplateButton(context),
|
saveAsTemplateAction: () => controller.handleClickSaveAsTemplateButton(context),
|
||||||
onOpenInsertLink: controller.openInsertLink,
|
onOpenInsertLink: controller.openInsertLink,
|
||||||
onOpenAIScribe: AIConfig.isAiEnabled ? () => controller.showAIScribeMenuForFullText(context) : null,
|
onOpenAIScribe: controller.isAIScribeAvailable ? () => controller.showAIScribeMenuForFullText(context) : null,
|
||||||
aiScribeButtonKey: AIConfig.isAiEnabled ? controller.aiScribeButtonKey : null,
|
aiScribeButtonKey: controller.isAIScribeAvailable ? controller.aiScribeButtonKey : null,
|
||||||
)),
|
)),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
@@ -958,7 +957,7 @@ class ComposerView extends GetWidget<ComposerController> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Widget _buildAIScribeSelectionButton(BuildContext context) {
|
Widget _buildAIScribeSelectionButton(BuildContext context) {
|
||||||
if (!AIConfig.isAiEnabled) {
|
if (!controller.isAIScribeAvailable) {
|
||||||
return const SizedBox.shrink();
|
return const SizedBox.shrink();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2,11 +2,14 @@ import 'package:core/presentation/resources/image_paths.dart';
|
|||||||
import 'package:core/utils/platform_info.dart';
|
import 'package:core/utils/platform_info.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
|
import 'package:jmap_dart_client/jmap/account_id.dart';
|
||||||
|
import 'package:jmap_dart_client/jmap/core/session/session.dart';
|
||||||
import 'package:scribe/scribe.dart';
|
import 'package:scribe/scribe.dart';
|
||||||
import 'package:scribe/scribe/ai/presentation/widgets/ai_scribe.dart';
|
import 'package:scribe/scribe/ai/presentation/widgets/ai_scribe.dart';
|
||||||
import 'package:tmail_ui_user/features/composer/presentation/controller/rich_text_mobile_tablet_controller.dart';
|
import 'package:tmail_ui_user/features/composer/presentation/controller/rich_text_mobile_tablet_controller.dart';
|
||||||
import 'package:tmail_ui_user/features/composer/presentation/controller/rich_text_web_controller.dart';
|
import 'package:tmail_ui_user/features/composer/presentation/controller/rich_text_web_controller.dart';
|
||||||
import 'package:tmail_ui_user/features/composer/presentation/widgets/mixins/text_selection_mixin.dart';
|
import 'package:tmail_ui_user/features/composer/presentation/widgets/mixins/text_selection_mixin.dart';
|
||||||
|
import 'package:tmail_ui_user/features/home/domain/extensions/session_extensions.dart';
|
||||||
|
|
||||||
mixin AIScribeInComposerMixin {
|
mixin AIScribeInComposerMixin {
|
||||||
final editorTextSelection = Rxn<EditorTextSelection>();
|
final editorTextSelection = Rxn<EditorTextSelection>();
|
||||||
@@ -16,6 +19,20 @@ mixin AIScribeInComposerMixin {
|
|||||||
RichTextMobileTabletController? get richTextMobileTabletController;
|
RichTextMobileTabletController? get richTextMobileTabletController;
|
||||||
ImagePaths get imagePaths;
|
ImagePaths get imagePaths;
|
||||||
GenerateAITextInteractor get generateAITextInteractor;
|
GenerateAITextInteractor get generateAITextInteractor;
|
||||||
|
Session? get session;
|
||||||
|
AccountId? get accountId;
|
||||||
|
|
||||||
|
bool get isAIScribeAvailable {
|
||||||
|
if (!AIConfig.isAiEnabled) return false;
|
||||||
|
|
||||||
|
final currentSession = session;
|
||||||
|
final currentAccountId = accountId;
|
||||||
|
|
||||||
|
if (currentSession == null || currentAccountId == null) return false;
|
||||||
|
|
||||||
|
final aiCapability = currentSession.getAICapability(currentAccountId);
|
||||||
|
return aiCapability != null;
|
||||||
|
}
|
||||||
|
|
||||||
Future<String> getTextOnlyContentInEditor();
|
Future<String> getTextOnlyContentInEditor();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user