From eb519f4e11884ffcf1e2a28b56104d73b4a64698 Mon Sep 17 00:00:00 2001 From: Vincent Chan Date: Wed, 10 Aug 2022 16:48:19 +0800 Subject: [PATCH] feat: add cache to text_delta --- .../flowy_editor/lib/src/document/text_delta.dart | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/frontend/app_flowy/packages/flowy_editor/lib/src/document/text_delta.dart b/frontend/app_flowy/packages/flowy_editor/lib/src/document/text_delta.dart index 5c81a039ed..c886f9d5c8 100644 --- a/frontend/app_flowy/packages/flowy_editor/lib/src/document/text_delta.dart +++ b/frontend/app_flowy/packages/flowy_editor/lib/src/document/text_delta.dart @@ -259,6 +259,7 @@ TextOperation? _textOperationFromJson(Map json) { // basically copy from: https://github.com/quilljs/delta class Delta extends Iterable { final List _operations; + String? _rawString; factory Delta.fromJson(List list) { final operations = []; @@ -284,6 +285,7 @@ class Delta extends Iterable { if (textOp.isEmpty) { return this; } + _rawString = null; if (_operations.isNotEmpty) { final lastOp = _operations.last; @@ -431,6 +433,7 @@ class Delta extends Iterable { if (_operations.isEmpty) { return this; } + _rawString = null; final lastOp = _operations.last; if (lastOp is TextRetain && (lastOp.attributes?.length ?? 0) == 0) { _operations.removeLast(); @@ -481,9 +484,11 @@ class Delta extends Iterable { return _operations.map((e) => e.toJson()).toList(); } - // TODO: It's unneccesry to compute everytime. - String toRawString() => - _operations.whereType().map((op) => op.content).join(); + String toRawString() { + _rawString ??= + _operations.whereType().map((op) => op.content).join(); + return _rawString!; + } @override Iterator get iterator => _operations.iterator;