Merge pull request #1052 from AppFlowy-IO/feat/node_transform

This commit is contained in:
Nathan.fooo
2022-09-15 22:34:25 +08:00
committed by GitHub
34 changed files with 1033 additions and 507 deletions

View File

@ -90,7 +90,7 @@ class DocumentBloc extends Bloc<DocumentEvent, DocumentState> {
final result = await service.openDocument(docId: view.id);
result.fold(
(block) {
document = _decodeJsonToDocument(block.deltaStr);
document = _decodeJsonToDocument(block.snapshot);
_subscription = document.changes.listen((event) {
final delta = event.item2;
final documentDelta = document.toDelta();
@ -115,16 +115,12 @@ class DocumentBloc extends Bloc<DocumentEvent, DocumentState> {
void _composeDelta(Delta composedDelta, Delta documentDelta) async {
final json = jsonEncode(composedDelta.toJson());
Log.debug("doc_id: $view.id - Send json: $json");
final result = await service.composeDelta(docId: view.id, data: json);
final result = await service.applyEdit(docId: view.id, data: json);
result.fold((rustDoc) {
// final json = utf8.decode(doc.data);
final rustDelta = Delta.fromJson(jsonDecode(rustDoc.deltaStr));
if (documentDelta != rustDelta) {
Log.error("Receive : $rustDelta");
Log.error("Expected : $documentDelta");
}
}, (r) => null);
result.fold(
(_) {},
(r) => Log.error(r),
);
}
Document _decodeJsonToDocument(String data) {

View File

@ -4,22 +4,28 @@ import 'package:flowy_sdk/dispatch/dispatch.dart';
import 'package:flowy_sdk/protobuf/flowy-folder/view.pb.dart';
import 'package:flowy_sdk/protobuf/flowy-error/errors.pb.dart';
import 'package:flowy_sdk/protobuf/flowy-sync/text_block.pb.dart';
import 'package:flowy_sdk/protobuf/flowy-text-block/entities.pb.dart';
class DocumentService {
Future<Either<TextBlockDeltaPB, FlowyError>> openDocument({
Future<Either<TextBlockPB, FlowyError>> openDocument({
required String docId,
}) async {
await FolderEventSetLatestView(ViewIdPB(value: docId)).send();
final payload = TextBlockIdPB(value: docId);
return TextBlockEventGetBlockData(payload).send();
return TextBlockEventGetTextBlock(payload).send();
}
Future<Either<TextBlockDeltaPB, FlowyError>> composeDelta({required String docId, required String data}) {
final payload = TextBlockDeltaPB.create()
..blockId = docId
..deltaStr = data;
return TextBlockEventApplyDelta(payload).send();
Future<Either<Unit, FlowyError>> applyEdit({
required String docId,
required String data,
String operations = "",
}) {
final payload = EditPayloadPB.create()
..textBlockId = docId
..operations = operations
..delta = data;
return TextBlockEventApplyEdit(payload).send();
}
Future<Either<Unit, FlowyError>> closeDocument({required String docId}) {