mirror of
https://github.com/AppFlowy-IO/AppFlowy.git
synced 2025-04-24 14:47:13 -04:00
refactor: put document business logic into service
This commit is contained in:
parent
8128283ad4
commit
6509247fbd
3 changed files with 12 additions and 17 deletions
|
@ -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);
|
||||||
|
|
|
@ -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();
|
||||||
}
|
}
|
|
@ -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>(),
|
||||||
),
|
),
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue