From 54ca4595ad42160fb53f133fb49a201dc7ec51b9 Mon Sep 17 00:00:00 2001 From: dab246 Date: Thu, 18 Dec 2025 16:13:41 +0700 Subject: [PATCH] feat(ai-scribe): Fix some comments of coderabbit --- lib/features/base/mixin/ai_scribe_mixin.dart | 7 +++++++ .../home/domain/extensions/session_extensions.dart | 2 +- .../ai/domain/usecases/generate_ai_text_interactor.dart | 2 -- .../lib/scribe/ai/presentation/model/ai_capability.dart | 3 --- .../scribe/ai/presentation/styles/ai_scribe_styles.dart | 8 ++++---- .../presentation/utils/modal/ai_scribe_modal_manager.dart | 2 +- .../widgets/context_menu/ai_scribe_context_menu.dart | 6 ------ 7 files changed, 13 insertions(+), 17 deletions(-) diff --git a/lib/features/base/mixin/ai_scribe_mixin.dart b/lib/features/base/mixin/ai_scribe_mixin.dart index 2af4cfa65..c02e35dc9 100644 --- a/lib/features/base/mixin/ai_scribe_mixin.dart +++ b/lib/features/base/mixin/ai_scribe_mixin.dart @@ -27,6 +27,13 @@ mixin AiScribeMixin { if (scribeEndpoint == null || scribeEndpoint.isEmpty) return; + // Validate endpoint format + if (Uri.tryParse(scribeEndpoint)?.hasAbsolutePath != true) { + logError( + 'AiScribeMixin::injectAIScribeBindings(): Invalid endpoint format: $scribeEndpoint'); + return; + } + AIScribeBindings(scribeEndpoint).dependencies(); } catch (e) { logError('AiScribeMixin::injectAIScribeBindings(): $e'); diff --git a/lib/features/home/domain/extensions/session_extensions.dart b/lib/features/home/domain/extensions/session_extensions.dart index 804f19203..88530af63 100644 --- a/lib/features/home/domain/extensions/session_extensions.dart +++ b/lib/features/home/domain/extensions/session_extensions.dart @@ -35,7 +35,7 @@ extension SessionExtensions on Session { linagoraDownloadAllCapability: DownloadAllCapability.deserialize, capabilityServerSettings: SettingsCapability.deserialize, linagoraSaaSCapability: SaaSAccountCapability.deserialize, - AiScribeConstants.aiCapability: AICapability.deserialize, + AiScribeConstants.aiCapability: AICapability.fromJson, }; Map toJson() { diff --git a/scribe/lib/scribe/ai/domain/usecases/generate_ai_text_interactor.dart b/scribe/lib/scribe/ai/domain/usecases/generate_ai_text_interactor.dart index 8bd3fff26..496642539 100644 --- a/scribe/lib/scribe/ai/domain/usecases/generate_ai_text_interactor.dart +++ b/scribe/lib/scribe/ai/domain/usecases/generate_ai_text_interactor.dart @@ -1,6 +1,5 @@ import 'package:core/presentation/state/failure.dart'; import 'package:core/presentation/state/success.dart'; -import 'package:core/utils/app_logger.dart'; import 'package:dartz/dartz.dart'; import 'package:scribe/scribe/ai/domain/constants/ai_prompts.dart'; import 'package:scribe/scribe/ai/domain/repository/ai_scribe_repository.dart'; @@ -18,7 +17,6 @@ class GenerateAITextInteractor { ) async { try { final prompt = AIPrompts.buildPrompt(action, selectedText); - log('$runtimeType::execute():prompt: $prompt'); final response = await _repository.generateMessage(prompt); return Right(GenerateAITextSuccess(response)); } catch (e) { diff --git a/scribe/lib/scribe/ai/presentation/model/ai_capability.dart b/scribe/lib/scribe/ai/presentation/model/ai_capability.dart index 47c81c884..334c8395b 100644 --- a/scribe/lib/scribe/ai/presentation/model/ai_capability.dart +++ b/scribe/lib/scribe/ai/presentation/model/ai_capability.dart @@ -14,9 +14,6 @@ class AICapability extends CapabilityProperties { Map toJson() => _$AICapabilityToJson(this); - factory AICapability.deserialize(Map json) => - _$AICapabilityFromJson(json); - bool get isScribeEndpointAvailable => scribeEndpoint?.trim().isNotEmpty == true; diff --git a/scribe/lib/scribe/ai/presentation/styles/ai_scribe_styles.dart b/scribe/lib/scribe/ai/presentation/styles/ai_scribe_styles.dart index 9b498bac7..17b5bb6b0 100644 --- a/scribe/lib/scribe/ai/presentation/styles/ai_scribe_styles.dart +++ b/scribe/lib/scribe/ai/presentation/styles/ai_scribe_styles.dart @@ -159,16 +159,16 @@ abstract final class AIScribeSizes { EdgeInsetsDirectional.all(16); static const EdgeInsetsGeometry suggestionInfoPadding = - EdgeInsetsGeometry.only(bottom: 16); + EdgeInsetsDirectional.only(bottom: 16); static const EdgeInsetsGeometry suggestionHeaderPadding = - EdgeInsetsGeometry.fromLTRB(16, 8, 8, 8); + EdgeInsetsDirectional.only(start: 16, top: 8, end: 8, bottom: 8); static const EdgeInsetsGeometry suggestionFooterPadding = - EdgeInsetsGeometry.symmetric(horizontal: 16, vertical: 16); + EdgeInsetsDirectional.symmetric(horizontal: 16, vertical: 16); static const EdgeInsetsGeometry scribeButtonPadding = - EdgeInsetsGeometry.all(6); + EdgeInsetsDirectional.all(6); static const EdgeInsetsGeometry mainActionButtonPadding = EdgeInsetsDirectional.symmetric(horizontal: 16, vertical: 8); diff --git a/scribe/lib/scribe/ai/presentation/utils/modal/ai_scribe_modal_manager.dart b/scribe/lib/scribe/ai/presentation/utils/modal/ai_scribe_modal_manager.dart index 743c4f261..dbf879c20 100644 --- a/scribe/lib/scribe/ai/presentation/utils/modal/ai_scribe_modal_manager.dart +++ b/scribe/lib/scribe/ai/presentation/utils/modal/ai_scribe_modal_manager.dart @@ -30,7 +30,7 @@ class AiScribeModalManager { submenuController: submenuController, ), barrierColor: AIScribeColors.dialogBarrier, - ).whenComplete(submenuController.hide); + ).whenComplete(submenuController.dispose); if (aiAction != null) { await showAIScribeSuggestionModal( diff --git a/scribe/lib/scribe/ai/presentation/widgets/context_menu/ai_scribe_context_menu.dart b/scribe/lib/scribe/ai/presentation/widgets/context_menu/ai_scribe_context_menu.dart index cc5416fe2..73054de96 100644 --- a/scribe/lib/scribe/ai/presentation/widgets/context_menu/ai_scribe_context_menu.dart +++ b/scribe/lib/scribe/ai/presentation/widgets/context_menu/ai_scribe_context_menu.dart @@ -107,10 +107,4 @@ class _AiScribeContextMenuContentState extends State { ), ); } - - @override - void dispose() { - widget.submenuController?.dispose(); - super.dispose(); - } }