From 71b1769eee6085fc48167e6e14961bf1fabbf8b1 Mon Sep 17 00:00:00 2001 From: "Lucas.Xu" Date: Thu, 13 Oct 2022 11:55:16 +0800 Subject: [PATCH] feat: notify transaction instead of operations --- .../packages/appflowy_editor/example/lib/main.dart | 4 ++-- .../packages/appflowy_editor/lib/src/editor_state.dart | 9 +++++---- .../lib/src/{ => history}/undo_manager.dart | 0 .../appflowy_editor/test/legacy/undo_manager_test.dart | 2 +- 4 files changed, 8 insertions(+), 7 deletions(-) rename frontend/app_flowy/packages/appflowy_editor/lib/src/{ => history}/undo_manager.dart (100%) diff --git a/frontend/app_flowy/packages/appflowy_editor/example/lib/main.dart b/frontend/app_flowy/packages/appflowy_editor/example/lib/main.dart index 89f4977b21..8d66b25b46 100644 --- a/frontend/app_flowy/packages/appflowy_editor/example/lib/main.dart +++ b/frontend/app_flowy/packages/appflowy_editor/example/lib/main.dart @@ -109,8 +109,8 @@ class _MyHomePageState extends State { ..handler = (message) { debugPrint(message); }; - _editorState!.operationStream.listen((event) { - debugPrint('Operation: ${event.toJson()}'); + _editorState!.transactionStream.listen((event) { + debugPrint('Transaction: ${event.toJson()}'); }); return Container( color: darkMode ? Colors.black : Colors.white, diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/src/editor_state.dart b/frontend/app_flowy/packages/appflowy_editor/lib/src/editor_state.dart index 6c0acb16b9..b01f88fed3 100644 --- a/frontend/app_flowy/packages/appflowy_editor/lib/src/editor_state.dart +++ b/frontend/app_flowy/packages/appflowy_editor/lib/src/editor_state.dart @@ -9,7 +9,7 @@ import 'package:appflowy_editor/src/core/location/selection.dart'; import 'package:appflowy_editor/src/core/document/document.dart'; import 'package:appflowy_editor/src/core/transform/operation.dart'; import 'package:appflowy_editor/src/core/transform/transaction.dart'; -import 'package:appflowy_editor/src/undo_manager.dart'; +import 'package:appflowy_editor/src/history/undo_manager.dart'; class ApplyOptions { /// This flag indicates that @@ -63,8 +63,8 @@ class EditorState { EditorStyle editorStyle = EditorStyle.defaultStyle(); /// Operation stream. - Stream get operationStream => _observer.stream; - final StreamController _observer = StreamController.broadcast(); + Stream get transactionStream => _observer.stream; + final StreamController _observer = StreamController.broadcast(); final UndoManager undoManager = UndoManager(); Selection? _cursorSelection; @@ -140,6 +140,8 @@ class EditorState { _applyOperation(op); } + _observer.add(transaction); + WidgetsBinding.instance.addPostFrameCallback((_) { updateCursorSelection(transaction.afterSelection); }); @@ -187,6 +189,5 @@ class EditorState { } else if (op is UpdateTextOperation) { document.updateText(op.path, op.delta); } - _observer.add(op); } } diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/src/undo_manager.dart b/frontend/app_flowy/packages/appflowy_editor/lib/src/history/undo_manager.dart similarity index 100% rename from frontend/app_flowy/packages/appflowy_editor/lib/src/undo_manager.dart rename to frontend/app_flowy/packages/appflowy_editor/lib/src/history/undo_manager.dart diff --git a/frontend/app_flowy/packages/appflowy_editor/test/legacy/undo_manager_test.dart b/frontend/app_flowy/packages/appflowy_editor/test/legacy/undo_manager_test.dart index bd173ce15f..7fbf4ec162 100644 --- a/frontend/app_flowy/packages/appflowy_editor/test/legacy/undo_manager_test.dart +++ b/frontend/app_flowy/packages/appflowy_editor/test/legacy/undo_manager_test.dart @@ -1,6 +1,6 @@ import 'dart:collection'; import 'package:appflowy_editor/appflowy_editor.dart'; -import 'package:appflowy_editor/src/undo_manager.dart'; +import 'package:appflowy_editor/src/history/undo_manager.dart'; import 'package:flutter_test/flutter_test.dart'; void main() async {