Use bindings to better separate scribe presentation and data layer
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
import 'package:dio/dio.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:scribe/scribe/ai/data/datasource/ai_datasource.dart';
|
||||
import 'package:scribe/scribe/ai/data/datasource_impl/ai_datasource_impl.dart';
|
||||
import 'package:scribe/scribe/ai/data/repository/ai_repository_impl.dart';
|
||||
import 'package:scribe/scribe/ai/domain/repository/ai_scribe_repository.dart';
|
||||
import 'package:scribe/scribe/ai/domain/usecases/generate_ai_text_interactor.dart';
|
||||
|
||||
class AIScribeBindings extends Bindings {
|
||||
@override
|
||||
void dependencies() {
|
||||
_bindingsDataSourceImpl();
|
||||
_bindingsDataSource();
|
||||
_bindingsRepositoryImpl();
|
||||
_bindingsRepository();
|
||||
_bindingsInteractor();
|
||||
}
|
||||
|
||||
void _bindingsDataSourceImpl() {
|
||||
Get.lazyPut<AIDataSourceImpl>(() => AIDataSourceImpl(
|
||||
dio: Dio(), // Dedicated Dio instance without authorization interceptors
|
||||
));
|
||||
}
|
||||
|
||||
void _bindingsDataSource() {
|
||||
Get.lazyPut<AIDataSource>(() => Get.find<AIDataSourceImpl>());
|
||||
}
|
||||
|
||||
void _bindingsRepositoryImpl() {
|
||||
Get.lazyPut<AIScribeRepositoryImpl>(() => AIScribeRepositoryImpl(
|
||||
Get.find<AIDataSource>(),
|
||||
));
|
||||
}
|
||||
|
||||
void _bindingsRepository() {
|
||||
Get.lazyPut<AIScribeRepository>(() => Get.find<AIScribeRepositoryImpl>());
|
||||
}
|
||||
|
||||
void _bindingsInteractor() {
|
||||
Get.lazyPut<GenerateAITextInteractor>(() => GenerateAITextInteractor(
|
||||
Get.find<AIScribeRepository>(),
|
||||
));
|
||||
}
|
||||
}
|
||||
@@ -1,10 +1,7 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:dio/dio.dart';
|
||||
import 'package:pointer_interceptor/pointer_interceptor.dart';
|
||||
import 'package:core/presentation/resources/image_paths.dart';
|
||||
import 'package:core/utils/app_logger.dart';
|
||||
import 'package:scribe/scribe/ai/data/datasource_impl/ai_datasource_impl.dart';
|
||||
import 'package:scribe/scribe/ai/data/repository/ai_repository_impl.dart';
|
||||
import 'package:scribe/scribe/ai/domain/state/generate_ai_text_state.dart';
|
||||
import 'package:scribe/scribe/ai/domain/usecases/generate_ai_text_interactor.dart';
|
||||
import 'package:scribe/scribe/ai/presentation/model/ai_action.dart';
|
||||
@@ -21,6 +18,7 @@ Future<void> showAIScribeDialog({
|
||||
required ImagePaths imagePaths,
|
||||
required String content,
|
||||
required AIScribeResultCallback onInsertText,
|
||||
required GenerateAITextInteractor interactor,
|
||||
List<AIScribeMenuCategory>? availableCategories,
|
||||
Offset? buttonPosition,
|
||||
}) async {
|
||||
@@ -109,7 +107,7 @@ Future<void> showAIScribeDialog({
|
||||
context: context,
|
||||
barrierDismissible: true,
|
||||
builder: (context) {
|
||||
final suggestionFuture = _executeAIRequest(selectedAction, content);
|
||||
final suggestionFuture = _executeAIRequest(interactor, selectedAction, content);
|
||||
final title = selectedAction.getLabel(context);
|
||||
|
||||
final modalContent = AIScribeSuggestion(
|
||||
@@ -194,14 +192,10 @@ Future<void> showAIScribeDialog({
|
||||
}
|
||||
|
||||
Future<String> _executeAIRequest(
|
||||
GenerateAITextInteractor interactor,
|
||||
AIAction action,
|
||||
String content,
|
||||
) async {
|
||||
final dio = Dio();
|
||||
final dataSource = AIDataSourceImpl(dio: dio);
|
||||
final repository = AIScribeRepositoryImpl(dataSource);
|
||||
final interactor = GenerateAITextInteractor(repository);
|
||||
|
||||
final result = await interactor.execute(action, content);
|
||||
|
||||
return result.fold(
|
||||
|
||||
+1
-1
@@ -581,7 +581,7 @@ packages:
|
||||
source: hosted
|
||||
version: "4.0.0"
|
||||
get:
|
||||
dependency: transitive
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: get
|
||||
sha256: e4e7335ede17452b391ed3b2ede016545706c01a02292a6c97619705e7d2a85e
|
||||
|
||||
@@ -24,6 +24,8 @@ dependencies:
|
||||
|
||||
flutter_dotenv: 5.0.2
|
||||
|
||||
get: 4.6.6
|
||||
|
||||
pointer_interceptor: 0.10.1+2
|
||||
|
||||
intl: 0.20.2
|
||||
|
||||
Reference in New Issue
Block a user