AppFlowy-IO / AppFlowy-IO/appflowy-editor
[Bug] deleteNodes and insertNodes in the same transactions leads to incorrect item order
- Lenguaje dominante
- Dart
- Estrellas
- 684
- Forks
- 329
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Descripción
### Bug Description
Clearing a document with `deleteNode` and then adding replacing the content with `insertNodes` messes up the order of the nodes inserted if done in the same transaction.
### How to Reproduce
I added two tests in `transaction_test.dart`, which show the error. The first works as expected, the second fails because items are added in the wrong order:
```dart
test('insertNodes', () async {
final n1 = Node(type: 'paragraph-1');
final n2 = Node(type: 'paragraph-2');
final n3 = Node(type: 'paragraph-3');
final editorState = EditorState(document: Document.blank());
expect(editorState.document.root.children.length, 0);
final transaction = editorState.transaction;
transaction.insertNodes([0], [n1, n2, n3]);
await editorState.apply(transaction);
expect(editorState.document.root.children.length, 3);
expect(editorState.document.root.children[0].type, 'paragraph-1');
expect(editorState.document.root.children[1].type, 'paragraph-2');
expect(editorState.document.root.children[2].type, 'paragraph-3');
});
test('replacing Nodes', () async {
final n1 = Node(type: 'paragraph-1');
final n2 = Node(type: 'paragraph-2');
final n3 = Node(type: 'paragraph-3');
final start = Document.blank()
..insert([0], [paragraphNode(text: 'Initial content')]);
final editorState = EditorState(document: start);
expect(editorState.document.root.children.length, 1);
final transaction = editorState.transaction;
transaction.deleteNode(editorState.document.root.children.first);
transaction.insertNodes([0], [n1, n2, n3]);
await editorState.apply(transaction);
expect(editorState.document.root.children.length, 3);
expect(editorState.document.root.children[0].type, 'paragraph-1');
expect(editorState.document.root.children[1].type, 'paragraph-2');
expect(editorState.document.root.children[2].type, 'paragraph-3');
});
```
### Expected Behavior
The items should have the correct order.
### Operating System
Linux
### AppFlowy Editor Version(s)
5.2.0 / `main`
### Screenshots
n/a
### Additional Context
just applying them as two separate transactions seems to work fine.
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Evaluación
Este issue todavía no se ha evaluado.