Lucas.Xu ffff628359
feat: document migration from 0.1.x to 0.2.0 (#2583)
* chore: migrate the rewrite feature

* chore: rename flowy-document

* feat: add initial_data interface

* chore: rename the document event

* fix: font name error

* fix: export page UI issues

* feat: implement editor migration 0.1.x -> 0.2.0

* feat: support import old json

* fix: nested list error

* chore: update pubspec
2023-05-23 16:13:12 +08:00

53 lines
1.7 KiB
Dart

import 'package:dartz/dartz.dart';
import 'package:appflowy_backend/dispatch/dispatch.dart';
import 'package:appflowy_backend/protobuf/flowy-folder2/view.pb.dart';
import 'package:appflowy_backend/protobuf/flowy-error/errors.pb.dart';
import 'package:appflowy_backend/protobuf/flowy-document2/entities.pb.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 {
// set the latest view
await FolderEventSetLatestView(ViewIdPB(value: view.id)).send();
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();
}
}