From 816cb0c3eda18de6a713b245ab23f5a984fb412a Mon Sep 17 00:00:00 2001 From: Vishesh Handa Date: Mon, 18 May 2020 00:23:14 +0200 Subject: [PATCH] Reduce code duplication Avoid code for determining the publicName of a folder. --- lib/core/flattened_notes_folder.dart | 3 +++ lib/core/notes_folder.dart | 1 + lib/core/notes_folder_fs.dart | 9 +++++++++ lib/core/sorted_notes_folder.dart | 3 +++ lib/core/virtual_notes_folder.dart | 3 +++ lib/editors/common.dart | 7 +------ lib/screens/folder_view.dart | 11 +---------- lib/widgets/folder_selection_dialog.dart | 7 +------ lib/widgets/folder_tree_view.dart | 6 +----- 9 files changed, 23 insertions(+), 27 deletions(-) diff --git a/lib/core/flattened_notes_folder.dart b/lib/core/flattened_notes_folder.dart index ce997164..4fb7bc53 100644 --- a/lib/core/flattened_notes_folder.dart +++ b/lib/core/flattened_notes_folder.dart @@ -124,6 +124,9 @@ class FlattenedNotesFolder with NotesFolderNotifier implements NotesFolder { @override String get name => title ?? "All Notes"; + @override + String get publicName => title ?? "All Notes"; + @override NotesFolderConfig get config { return _parentFolder.config; diff --git a/lib/core/notes_folder.dart b/lib/core/notes_folder.dart index aa50e0a3..e1234513 100644 --- a/lib/core/notes_folder.dart +++ b/lib/core/notes_folder.dart @@ -8,6 +8,7 @@ abstract class NotesFolder implements NotesFolderNotifier { bool get isEmpty; bool get hasNotes; String get name; + String get publicName; List get notes; List get subFolders; diff --git a/lib/core/notes_folder_fs.dart b/lib/core/notes_folder_fs.dart index bfedb8ce..6e88f938 100644 --- a/lib/core/notes_folder_fs.dart +++ b/lib/core/notes_folder_fs.dart @@ -357,6 +357,15 @@ class NotesFolderFS with NotesFolderNotifier implements NotesFolder { return p.join(parent.pathSpec(), name); } + @override + String get publicName { + var spec = pathSpec(); + if (spec.isEmpty) { + return "Root Folder"; + } + return spec; + } + Iterable getAllNotes() sync* { for (var note in _notes) { yield note; diff --git a/lib/core/sorted_notes_folder.dart b/lib/core/sorted_notes_folder.dart index b220d0a1..90826898 100644 --- a/lib/core/sorted_notes_folder.dart +++ b/lib/core/sorted_notes_folder.dart @@ -160,6 +160,9 @@ class SortedNotesFolder with NotesFolderNotifier implements NotesFolder { @override String get name => folder.name; + @override + String get publicName => folder.publicName; + @override NotesFolder get fsFolder { return folder; diff --git a/lib/core/virtual_notes_folder.dart b/lib/core/virtual_notes_folder.dart index 8f004ee6..2bfc3ba5 100644 --- a/lib/core/virtual_notes_folder.dart +++ b/lib/core/virtual_notes_folder.dart @@ -28,6 +28,9 @@ class VirtualNotesFolder with NotesFolderNotifier implements NotesFolder { @override String get name => ""; + @override + String get publicName => ""; + @override NotesFolder get fsFolder { return null; diff --git a/lib/editors/common.dart b/lib/editors/common.dart index 222987d9..bb075d7f 100644 --- a/lib/editors/common.dart +++ b/lib/editors/common.dart @@ -93,11 +93,6 @@ class EditorBottomBar extends StatelessWidget { @override Widget build(BuildContext context) { - var folderName = parentFolder.pathSpec(); - if (folderName.isEmpty) { - folderName = "Root Folder"; - } - var addIcon = IconButton( icon: Icon(Icons.attach_file), onPressed: () { @@ -136,7 +131,7 @@ class EditorBottomBar extends StatelessWidget { Expanded( child: FlatButton.icon( icon: Icon(Icons.folder), - label: Text(folderName), + label: Text(parentFolder.publicName), onPressed: () { var note = editorState.getNote(); editor.moveNoteToFolderSelected(note); diff --git a/lib/screens/folder_view.dart b/lib/screens/folder_view.dart index a0c151f9..8e4f0d22 100644 --- a/lib/screens/folder_view.dart +++ b/lib/screens/folder_view.dart @@ -68,16 +68,7 @@ class _FolderViewState extends State { child: const Icon(Icons.add), ); - // If this is a Virtual folder which doesn't overwrite the FS folder's name - // then we should use it's given name as the title - String title = widget.notesFolder.name; - var fsFolder = widget.notesFolder.fsFolder; - if (fsFolder.name == widget.notesFolder.name) { - title = widget.notesFolder.parent == null - ? "Root Folder" - : widget.notesFolder.pathSpec(); - } - + String title = widget.notesFolder.publicName; Widget folderView = Builder( builder: (BuildContext context) { const emptyText = "Let's add some notes?"; diff --git a/lib/widgets/folder_selection_dialog.dart b/lib/widgets/folder_selection_dialog.dart index b902da7d..8b0fba7b 100644 --- a/lib/widgets/folder_selection_dialog.dart +++ b/lib/widgets/folder_selection_dialog.dart @@ -98,11 +98,6 @@ class FolderMiniTileState extends State { ) : null; - var folderName = folder.name; - if (folder.parent == null) { - folderName = "Root Folder"; - } - return Card( child: ListTile( leading: Container( @@ -115,7 +110,7 @@ class FolderMiniTileState extends State { color: Theme.of(context).accentColor, ), ), - title: Text(folderName), + title: Text(folder.publicName), trailing: trailling, ), ); diff --git a/lib/widgets/folder_tree_view.dart b/lib/widgets/folder_tree_view.dart index b7712f2c..9297e09f 100644 --- a/lib/widgets/folder_tree_view.dart +++ b/lib/widgets/folder_tree_view.dart @@ -118,10 +118,6 @@ class FolderTileState extends State { ) : null; - var folderName = folder.name; - if (folder.parent == null) { - folderName = "Root Folder"; - } var subtitle = folder.numberOfNotes.toString() + " Notes"; final theme = Theme.of(context); @@ -139,7 +135,7 @@ class FolderTileState extends State { color: Theme.of(context).accentColor, ), ), - title: Text(folderName), + title: Text(folder.publicName), subtitle: Text(subtitle), trailing: trailling, selected: selected,