| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 | import 'dart:convert';import 'dart:typed_data';import 'package:dartz/dartz.dart';import 'package:flowy_editor/flowy_editor.dart';import 'package:app_flowy/workspace/domain/i_doc.dart';import 'package:app_flowy/workspace/infrastructure/repos/doc_repo.dart';import 'package:flowy_editor/src/model/quill_delta.dart';import 'package:flowy_log/flowy_log.dart';import 'package:flowy_sdk/protobuf/flowy-document/doc.pb.dart';import 'package:flowy_sdk/protobuf/flowy-workspace/errors.pb.dart';class IDocImpl extends IDoc {  DocRepository repo;  IDocImpl({required this.repo});  @override  Future<Either<Unit, WorkspaceError>> closeDoc() {    return repo.closeDoc();  }  @override  Future<Either<Doc, WorkspaceError>> readDoc() async {    final docOrFail = await repo.readDoc();    return docOrFail;  }  @override  Future<Either<Unit, WorkspaceError>> saveDoc({String? json}) {    Log.debug("Saving doc");    return repo.saveDoc(data: _encodeText(json));  }  @override  Future<Either<Doc, WorkspaceError>> applyChangeset({String? json}) {    return repo.applyChangeset(data: _encodeText(json));  }}Uint8List _encodeText(String? json) {  final data = utf8.encode(json ?? "");  return Uint8List.fromList(data);}class EditorPersistenceImpl implements EditorPersistence {  DocRepository repo;  EditorPersistenceImpl({    required this.repo,  });  @override  Future<bool> save(List<dynamic> jsonList) async {    Log.debug("Saving doc");    final json = jsonEncode(jsonList);    final data = utf8.encode(json);    return repo.saveDoc(data: Uint8List.fromList(data)).then((result) {      return result.fold(        (l) => true,        (r) => false,      );    });  }}
 |