From 2bc1c0aea818375feb0a92271c5b181e11f4f2e8 Mon Sep 17 00:00:00 2001 From: Vishesh Handa Date: Sun, 9 Feb 2020 18:53:56 +0100 Subject: [PATCH] Fix SortedNotes folder and enable it again --- lib/core/sorted_notes_folder.dart | 10 +++++++--- lib/screens/journal_listing.dart | 3 ++- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/lib/core/sorted_notes_folder.dart b/lib/core/sorted_notes_folder.dart index 16a3c408..4fb8b35a 100644 --- a/lib/core/sorted_notes_folder.dart +++ b/lib/core/sorted_notes_folder.dart @@ -8,6 +8,9 @@ class SortedNotesFolder with NotesFolderNotifier implements NotesFolder { List _notes = []; SortedNotesFolder(this.folder) { + _notes = List.from(folder.notes); + _notes.sort(_compare); + folder.addFolderAddedListener(_folderAddedListener); folder.addFolderRemovedListener(_folderRemovedListener); @@ -15,9 +18,6 @@ class SortedNotesFolder with NotesFolderNotifier implements NotesFolder { folder.addNoteRemovedListener(_noteRemovedListener); folder.addListener(_entityChanged); - - _notes = folder.notes; - _notes.sort(_compare); } @override @@ -42,6 +42,8 @@ class SortedNotesFolder with NotesFolderNotifier implements NotesFolder { } void _noteAddedListener(int _, Note note) { + assert(folder.notes.length == _notes.length + 1); + var i = 0; for (; i < _notes.length; i++) { var n = _notes[i]; @@ -54,6 +56,8 @@ class SortedNotesFolder with NotesFolderNotifier implements NotesFolder { } void _noteRemovedListener(int _, Note note) { + assert(folder.notes.length == _notes.length - 1); + var index = _notes.indexWhere((n) => n.filePath == note.filePath); assert(index != -1); _notes.removeAt(index); diff --git a/lib/screens/journal_listing.dart b/lib/screens/journal_listing.dart index 8e728558..d29d9609 100644 --- a/lib/screens/journal_listing.dart +++ b/lib/screens/journal_listing.dart @@ -3,6 +3,7 @@ import 'package:fimber/fimber.dart'; import 'package:gitjournal/core/note.dart'; import 'package:gitjournal/core/notes_folder.dart'; +import 'package:gitjournal/core/sorted_notes_folder.dart'; import 'package:gitjournal/screens/note_editor.dart'; import 'package:gitjournal/state_container.dart'; import 'package:gitjournal/utils.dart'; @@ -79,7 +80,7 @@ class JournalListingScreen extends StatelessWidget { return Builder( builder: (context) { return JournalList( - folder: folder, + folder: SortedNotesFolder(folder), noteSelectedFunction: (Note note) async { var route = MaterialPageRoute( builder: (context) => NoteEditor.fromNote(note),