i_doc.dart 1015 B

123456789101112131415161718192021222324252627282930313233
  1. import 'dart:convert';
  2. import 'package:flowy_editor/flowy_editor.dart';
  3. import 'package:dartz/dartz.dart';
  4. import 'package:flowy_editor/src/model/quill_delta.dart';
  5. import 'package:flowy_log/flowy_log.dart';
  6. import 'package:flowy_sdk/protobuf/flowy-document/doc.pb.dart';
  7. import 'package:flowy_sdk/protobuf/flowy-workspace/errors.pb.dart';
  8. class FlowyDoc implements EditorChangesetSender {
  9. final Doc doc;
  10. final IDoc iDocImpl;
  11. Document data;
  12. FlowyDoc({required this.doc, required this.data, required this.iDocImpl}) {
  13. data.sender = this;
  14. }
  15. String get id => doc.id;
  16. @override
  17. void sendDelta(Delta delta) {
  18. final json = jsonEncode(delta.toJson());
  19. Log.debug("Send json: $json");
  20. iDocImpl.applyChangeset(json: json);
  21. }
  22. }
  23. abstract class IDoc {
  24. Future<Either<Doc, WorkspaceError>> readDoc();
  25. Future<Either<Unit, WorkspaceError>> saveDoc({String? json});
  26. Future<Either<Unit, WorkspaceError>> applyChangeset({String? json});
  27. Future<Either<Unit, WorkspaceError>> closeDoc();
  28. }