| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 | import 'package:appflowy_backend/dispatch/dispatch.dart';import 'package:appflowy_backend/protobuf/flowy-document2/entities.pb.dart';import 'package:appflowy_backend/protobuf/flowy-error/errors.pb.dart';import 'package:appflowy_backend/protobuf/flowy-folder2/view.pb.dart';import 'package:dartz/dartz.dart';class DocumentService {  // unused now.  Future<Either<FlowyError, Unit>> createDocument({    required ViewPB view,  }) async {    final canOpen = await openDocument(view: view);    if (canOpen.isRight()) {      return const Right(unit);    }    final payload = CreateDocumentPayloadPB()..documentId = view.id;    final result = await DocumentEventCreateDocument(payload).send();    return result.swap();  }  Future<Either<FlowyError, DocumentDataPB>> openDocument({    required ViewPB view,  }) async {    final payload = OpenDocumentPayloadPB()..documentId = view.id;    final result = await DocumentEventOpenDocument(payload).send();    return result.swap();  }  Future<Either<FlowyError, Unit>> closeDocument({    required ViewPB view,  }) async {    final payload = CloseDocumentPayloadPB()..documentId = view.id;    final result = await DocumentEventCloseDocument(payload).send();    return result.swap();  }  Future<Either<FlowyError, Unit>> applyAction({    required String documentId,    required Iterable<BlockActionPB> actions,  }) async {    final payload = ApplyActionPayloadPB(      documentId: documentId,      actions: actions,    );    final result = await DocumentEventApplyAction(payload).send();    return result.swap();  }  /// Creates a new external text.  ///  /// Normally, it's used to the block that needs sync long text.  ///  /// the delta parameter is the json representation of the delta.  Future<Either<FlowyError, Unit>> createExternalText({    required String documentId,    required String textId,    String? delta,  }) async {    final payload = TextDeltaPayloadPB(      documentId: documentId,      textId: textId,      delta: delta,    );    final result = await DocumentEventCreateText(payload).send();    return result.swap();  }  /// Updates the external text.  ///  /// this function is compatible with the [createExternalText] function.  ///  /// the delta parameter is the json representation of the delta too.  Future<Either<FlowyError, Unit>> updateExternalText({    required String documentId,    required String textId,    String? delta,  }) async {    final payload = TextDeltaPayloadPB(      documentId: documentId,      textId: textId,      delta: delta,    );    final result = await DocumentEventApplyTextDeltaEvent(payload).send();    return result.swap();  }}
 |