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:
Théo Poizat
2025-12-11 16:36:59 +01:00
committed by Dat H. Pham
parent 8c16bd1fad
commit 2325df616f
4 changed files with 31 additions and 10 deletions
@@ -2,11 +2,14 @@ import 'package:core/presentation/resources/image_paths.dart';
import 'package:core/utils/platform_info.dart';
import 'package:flutter/material.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/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_web_controller.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 {
final editorTextSelection = Rxn<EditorTextSelection>();
@@ -16,6 +19,20 @@ mixin AIScribeInComposerMixin {
RichTextMobileTabletController? get richTextMobileTabletController;
ImagePaths get imagePaths;
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();