refactor: put document business logic into service

This commit is contained in:
MikeWallaceDev 2022-02-28 21:02:46 -05:00
parent 8128283ad4
commit 6509247fbd
3 changed files with 12 additions and 17 deletions

View file

@ -1,5 +1,5 @@
import 'dart:convert'; import 'dart:convert';
import 'package:app_flowy/workspace/infrastructure/repos/document_repo.dart'; import 'package:app_flowy/workspace/application/doc/doc_service.dart';
import 'package:app_flowy/workspace/infrastructure/repos/trash_repo.dart'; import 'package:app_flowy/workspace/infrastructure/repos/trash_repo.dart';
import 'package:app_flowy/workspace/infrastructure/repos/view_repo.dart'; import 'package:app_flowy/workspace/infrastructure/repos/view_repo.dart';
import 'package:flowy_sdk/protobuf/flowy-folder-data-model/trash.pb.dart'; import 'package:flowy_sdk/protobuf/flowy-folder-data-model/trash.pb.dart';
@ -17,7 +17,7 @@ typedef FlutterQuillDocument = Document;
class DocumentBloc extends Bloc<DocumentEvent, DocumentState> { class DocumentBloc extends Bloc<DocumentEvent, DocumentState> {
final View view; final View view;
final DocumentRepository repo; final DocumentService service;
final ViewListener listener; final ViewListener listener;
final TrashRepo trashRepo; final TrashRepo trashRepo;
late FlutterQuillDocument document; late FlutterQuillDocument document;
@ -25,7 +25,7 @@ class DocumentBloc extends Bloc<DocumentEvent, DocumentState> {
DocumentBloc({ DocumentBloc({
required this.view, required this.view,
required this.repo, required this.service,
required this.listener, required this.listener,
required this.trashRepo, required this.trashRepo,
}) : super(DocumentState.initial()) { }) : super(DocumentState.initial()) {
@ -62,7 +62,7 @@ class DocumentBloc extends Bloc<DocumentEvent, DocumentState> {
await _subscription?.cancel(); await _subscription?.cancel();
} }
repo.closeDocument(); service.closeDocument(docId: view.id);
return super.close(); return super.close();
} }
@ -82,7 +82,7 @@ class DocumentBloc extends Bloc<DocumentEvent, DocumentState> {
}); });
listener.start(); listener.start();
final result = await repo.openDocument(); final result = await service.openDocument(docId: view.id);
result.fold( result.fold(
(doc) { (doc) {
document = _decodeJsonToDocument(doc.deltaJson); document = _decodeJsonToDocument(doc.deltaJson);
@ -108,7 +108,7 @@ class DocumentBloc extends Bloc<DocumentEvent, DocumentState> {
void _composeDelta(Delta composedDelta, Delta documentDelta) async { void _composeDelta(Delta composedDelta, Delta documentDelta) async {
final json = jsonEncode(composedDelta.toJson()); final json = jsonEncode(composedDelta.toJson());
Log.debug("doc_id: $view.id - Send json: $json"); Log.debug("doc_id: $view.id - Send json: $json");
final result = await repo.composeDelta(data: json); final result = await service.composeDelta(docId: view.id, data: json);
result.fold((rustDoc) { result.fold((rustDoc) {
// final json = utf8.decode(doc.data); // final json = utf8.decode(doc.data);

View file

@ -4,25 +4,20 @@ import 'package:flowy_sdk/protobuf/flowy-collaboration/document_info.pb.dart';
import 'package:flowy_sdk/protobuf/flowy-folder-data-model/view.pb.dart'; import 'package:flowy_sdk/protobuf/flowy-folder-data-model/view.pb.dart';
import 'package:flowy_sdk/protobuf/flowy-error/errors.pb.dart'; import 'package:flowy_sdk/protobuf/flowy-error/errors.pb.dart';
class DocumentRepository { class DocumentService {
final String docId; Future<Either<DocumentDelta, FlowyError>> openDocument({required String docId}) {
DocumentRepository({
required this.docId,
});
Future<Either<DocumentDelta, FlowyError>> openDocument() {
final request = ViewId(value: docId); final request = ViewId(value: docId);
return FolderEventOpenView(request).send(); return FolderEventOpenView(request).send();
} }
Future<Either<DocumentDelta, FlowyError>> composeDelta({required String data}) { Future<Either<DocumentDelta, FlowyError>> composeDelta({required String docId, required String data}) {
final request = DocumentDelta.create() final request = DocumentDelta.create()
..docId = docId ..docId = docId
..deltaJson = data; ..deltaJson = data;
return FolderEventApplyDocDelta(request).send(); return FolderEventApplyDocDelta(request).send();
} }
Future<Either<Unit, FlowyError>> closeDocument() { Future<Either<Unit, FlowyError>> closeDocument({required String docId}) {
final request = ViewId(value: docId); final request = ViewId(value: docId);
return FolderEventCloseView(request).send(); return FolderEventCloseView(request).send();
} }

View file

@ -1,5 +1,6 @@
import 'package:app_flowy/workspace/application/app/app_bloc.dart'; import 'package:app_flowy/workspace/application/app/app_bloc.dart';
import 'package:app_flowy/workspace/application/doc/doc_bloc.dart'; import 'package:app_flowy/workspace/application/doc/doc_bloc.dart';
import 'package:app_flowy/workspace/application/doc/doc_service.dart';
import 'package:app_flowy/workspace/application/doc/share_bloc.dart'; import 'package:app_flowy/workspace/application/doc/share_bloc.dart';
import 'package:app_flowy/workspace/application/home/home_listen_bloc.dart'; import 'package:app_flowy/workspace/application/home/home_listen_bloc.dart';
import 'package:app_flowy/workspace/application/menu/menu_bloc.dart'; import 'package:app_flowy/workspace/application/menu/menu_bloc.dart';
@ -9,7 +10,6 @@ import 'package:app_flowy/workspace/application/view/view_bloc.dart';
import 'package:app_flowy/workspace/application/workspace/welcome_bloc.dart'; import 'package:app_flowy/workspace/application/workspace/welcome_bloc.dart';
import 'package:app_flowy/workspace/domain/page_stack/page_stack.dart'; import 'package:app_flowy/workspace/domain/page_stack/page_stack.dart';
import 'package:app_flowy/workspace/infrastructure/repos/app_repo.dart'; import 'package:app_flowy/workspace/infrastructure/repos/app_repo.dart';
import 'package:app_flowy/workspace/infrastructure/repos/document_repo.dart';
import 'package:app_flowy/workspace/infrastructure/repos/trash_repo.dart'; import 'package:app_flowy/workspace/infrastructure/repos/trash_repo.dart';
import 'package:app_flowy/workspace/infrastructure/repos/user_repo.dart'; import 'package:app_flowy/workspace/infrastructure/repos/user_repo.dart';
import 'package:app_flowy/workspace/infrastructure/repos/view_repo.dart'; import 'package:app_flowy/workspace/infrastructure/repos/view_repo.dart';
@ -83,7 +83,7 @@ class HomeDepsResolver {
getIt.registerFactoryParam<DocumentBloc, View, void>( getIt.registerFactoryParam<DocumentBloc, View, void>(
(view, _) => DocumentBloc( (view, _) => DocumentBloc(
view: view, view: view,
repo: DocumentRepository(docId: view.id), service: DocumentService(),
listener: getIt<ViewListener>(param1: view), listener: getIt<ViewListener>(param1: view),
trashRepo: getIt<TrashRepo>(), trashRepo: getIt<TrashRepo>(),
), ),