doc_service.dart 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import 'package:dartz/dartz.dart';
  2. import 'package:appflowy_backend/dispatch/dispatch.dart';
  3. import 'package:appflowy_backend/protobuf/flowy-folder2/view.pb.dart';
  4. import 'package:appflowy_backend/protobuf/flowy-error/errors.pb.dart';
  5. import 'package:appflowy_backend/protobuf/flowy-document2/entities.pb.dart';
  6. class DocumentService {
  7. // unused now.
  8. Future<Either<FlowyError, Unit>> createDocument({
  9. required ViewPB view,
  10. }) async {
  11. final canOpen = await openDocument(view: view);
  12. if (canOpen.isRight()) {
  13. return const Right(unit);
  14. }
  15. final payload = CreateDocumentPayloadPBV2()..documentId = view.id;
  16. final result = await DocumentEvent2CreateDocument(payload).send();
  17. return result.swap();
  18. }
  19. Future<Either<FlowyError, DocumentDataPB2>> openDocument({
  20. required ViewPB view,
  21. }) async {
  22. // set the latest view
  23. await FolderEventSetLatestView(ViewIdPB(value: view.id)).send();
  24. final payload = OpenDocumentPayloadPBV2()..documentId = view.id;
  25. final result = await DocumentEvent2OpenDocument(payload).send();
  26. return result.swap();
  27. }
  28. Future<Either<FlowyError, Unit>> closeDocument({
  29. required ViewPB view,
  30. }) async {
  31. final payload = CloseDocumentPayloadPBV2()..documentId = view.id;
  32. final result = await DocumentEvent2CloseDocument(payload).send();
  33. return result.swap();
  34. }
  35. Future<Either<FlowyError, Unit>> applyAction({
  36. required String documentId,
  37. required Iterable<BlockActionPB> actions,
  38. }) async {
  39. final payload = ApplyActionPayloadPBV2(
  40. documentId: documentId,
  41. actions: actions,
  42. );
  43. final result = await DocumentEvent2ApplyAction(payload).send();
  44. return result.swap();
  45. }
  46. }