Rename NoteFolder -> NotesFolder

This commit is contained in:
Vishesh Handa
2019-12-04 14:22:17 +01:00
parent e287d41ffe
commit 10d65cd6fb
7 changed files with 54 additions and 22 deletions

View File

@ -1,7 +1,7 @@
import 'package:shared_preferences/shared_preferences.dart'; import 'package:shared_preferences/shared_preferences.dart';
import 'package:fimber/fimber.dart'; import 'package:fimber/fimber.dart';
import 'package:gitjournal/core/note.dart'; import 'package:gitjournal/core/note.dart';
import 'package:gitjournal/core/note_folder.dart'; import 'package:gitjournal/core/notes_folder.dart';
class AppState { class AppState {
// //
@ -28,7 +28,7 @@ class AppState {
} }
List<Note> notes = []; List<Note> notes = [];
NoteFolder noteFolder; NotesFolder noteFolder;
AppState(SharedPreferences pref) { AppState(SharedPreferences pref) {
localGitRepoConfigured = pref.getBool("localGitRepoConfigured") ?? false; localGitRepoConfigured = pref.getBool("localGitRepoConfigured") ?? false;

View File

@ -1,11 +1,11 @@
import 'note.dart'; import 'note.dart';
import 'note_folder.dart'; import 'notes_folder.dart';
// FIXME: Maybe the parent should be a part of the Note, and the NoteFolder // FIXME: Maybe the parent should be a part of the Note, and the NoteFolder
// or maybe also a part of the NoteFolder // or maybe also a part of the NoteFolder
class NoteFSEntity { class NoteFSEntity {
NoteFolder parent; NotesFolder parent;
NoteFolder folder; NotesFolder folder;
Note note; Note note;
NoteFSEntity(this.parent, {this.folder, this.note}) { NoteFSEntity(this.parent, {this.folder, this.note}) {

View File

@ -5,11 +5,12 @@ import 'package:path/path.dart';
import 'note.dart'; import 'note.dart';
import 'note_fs_entity.dart'; import 'note_fs_entity.dart';
class NoteFolder { class NotesFolder {
NotesFolder parent;
List<NoteFSEntity> entities = []; List<NoteFSEntity> entities = [];
String folderPath; String folderPath;
NoteFolder(this.folderPath); NotesFolder(this.parent, this.folderPath);
bool get isEmpty { bool get isEmpty {
return entities.isEmpty; return entities.isEmpty;
@ -55,24 +56,55 @@ class NoteFolder {
var lister = dir.list(recursive: false, followLinks: false); var lister = dir.list(recursive: false, followLinks: false);
await for (var fsEntity in lister) { await for (var fsEntity in lister) {
if (fsEntity is Directory) { if (fsEntity is Directory) {
var subFolder = NoteFolder(fsEntity.path); var subFolder = NotesFolder(this, fsEntity.path);
if (subFolder.name.startsWith('.')) { if (subFolder.name.startsWith('.')) {
continue; continue;
} }
await subFolder.loadRecursively(); await subFolder.loadRecursively();
var noteFSEntity = NoteFSEntity(this, folder: subFolder); var noteFSEntity = NoteFSEntity(folder: subFolder);
entities.add(noteFSEntity); entities.add(noteFSEntity);
} }
var note = Note(fsEntity.path); var note = Note(this, fsEntity.path);
if (!note.filePath.toLowerCase().endsWith('.md')) { if (!note.filePath.toLowerCase().endsWith('.md')) {
continue; continue;
} }
await note.load(); await note.load();
var noteFSEntity = NoteFSEntity(this, note: note); var noteFSEntity = NoteFSEntity(note: note);
entities.add(noteFSEntity); entities.add(noteFSEntity);
} }
} }
void add(Note note) {
assert(note.parent == this);
entities.add(NoteFSEntity(note: note));
}
void insert(int index, Note note) {
assert(note.parent == this);
for (var i = 0; i < entities.length; i++) {
var e = entities[i];
if (e is NotesFolder) continue;
if (index == 0) {
entities.insert(i, NoteFSEntity(note: note));
return;
}
index--;
}
}
void remove(Note note) {
assert(note.parent == this);
var i = entities.indexWhere((e) {
if (e.isFolder) return false;
return e.note.filePath == note.filePath;
});
assert(i != -1);
entities.removeAt(i);
}
} }

View File

@ -4,7 +4,7 @@ import 'package:gitjournal/widgets/app_bar_menu_button.dart';
import 'package:gitjournal/widgets/app_drawer.dart'; import 'package:gitjournal/widgets/app_drawer.dart';
import 'package:gitjournal/widgets/folder_tree_view.dart'; import 'package:gitjournal/widgets/folder_tree_view.dart';
import 'package:gitjournal/state_container.dart'; import 'package:gitjournal/state_container.dart';
import 'package:gitjournal/core/note_folder.dart'; import 'package:gitjournal/core/notes_folder.dart';
import 'journal_listing.dart'; import 'journal_listing.dart';
@ -16,7 +16,7 @@ class FolderListingScreen extends StatelessWidget {
var treeView = FolderTreeView( var treeView = FolderTreeView(
rootFolder: appState.noteFolder, rootFolder: appState.noteFolder,
onFolderSelected: (NoteFolder folder) { onFolderSelected: (NotesFolder folder) {
var route = MaterialPageRoute( var route = MaterialPageRoute(
builder: (context) => JournalListingScreen( builder: (context) => JournalListingScreen(
noteFolder: folder, noteFolder: folder,

View File

@ -1,6 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:gitjournal/core/note.dart'; import 'package:gitjournal/core/note.dart';
import 'package:gitjournal/core/note_folder.dart'; import 'package:gitjournal/core/notes_folder.dart';
import 'package:gitjournal/utils.dart'; import 'package:gitjournal/utils.dart';
import 'package:gitjournal/apis/git.dart'; import 'package:gitjournal/apis/git.dart';
import 'package:gitjournal/screens/journal_editor.dart'; import 'package:gitjournal/screens/journal_editor.dart';
@ -12,7 +12,7 @@ import 'package:gitjournal/widgets/journal_list.dart';
import 'package:gitjournal/themes.dart'; import 'package:gitjournal/themes.dart';
class JournalListingScreen extends StatelessWidget { class JournalListingScreen extends StatelessWidget {
final NoteFolder noteFolder; final NotesFolder noteFolder;
final bool recursive; final bool recursive;
JournalListingScreen({@required this.noteFolder, this.recursive = false}); JournalListingScreen({@required this.noteFolder, this.recursive = false});

View File

@ -8,7 +8,7 @@ import 'package:gitjournal/analytics.dart';
import 'package:gitjournal/apis/git_migration.dart'; import 'package:gitjournal/apis/git_migration.dart';
import 'package:gitjournal/appstate.dart'; import 'package:gitjournal/appstate.dart';
import 'package:gitjournal/core/note.dart'; import 'package:gitjournal/core/note.dart';
import 'package:gitjournal/core/note_folder.dart'; import 'package:gitjournal/core/notes_folder.dart';
import 'package:gitjournal/core/note_fileName.dart'; import 'package:gitjournal/core/note_fileName.dart';
import 'package:gitjournal/storage/git_storage.dart'; import 'package:gitjournal/storage/git_storage.dart';
import 'package:path/path.dart' as p; import 'package:path/path.dart' as p;
@ -57,7 +57,7 @@ class StateContainerState extends State<StateContainer> {
dirName: appState.localGitRepoPath, dirName: appState.localGitRepoPath,
); );
} }
appState.noteFolder = NoteFolder(noteRepo.notesBasePath); appState.noteFolder = NotesFolder(noteRepo.notesBasePath);
// Just a fail safe // Just a fail safe
if (!appState.remoteGitRepoConfigured) { if (!appState.remoteGitRepoConfigured) {
@ -225,7 +225,7 @@ class StateContainerState extends State<StateContainer> {
baseDirectory: appState.gitBaseDirectory, baseDirectory: appState.gitBaseDirectory,
dirName: appState.remoteGitRepoFolderName, dirName: appState.remoteGitRepoFolderName,
); );
appState.noteFolder = NoteFolder(noteRepo.notesBasePath); appState.noteFolder = NotesFolder(noteRepo.notesBasePath);
await _persistConfig(); await _persistConfig();
_loadNotesFromDisk(); _loadNotesFromDisk();

View File

@ -1,11 +1,11 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:gitjournal/core/note_folder.dart'; import 'package:gitjournal/core/notes_folder.dart';
typedef void FolderSelectedCallback(NoteFolder folder); typedef void FolderSelectedCallback(NotesFolder folder);
class FolderTreeView extends StatelessWidget { class FolderTreeView extends StatelessWidget {
final NoteFolder rootFolder; final NotesFolder rootFolder;
final FolderSelectedCallback onFolderSelected; final FolderSelectedCallback onFolderSelected;
FolderTreeView({ FolderTreeView({
@ -29,7 +29,7 @@ class FolderTreeView extends StatelessWidget {
} }
class FolderTile extends StatefulWidget { class FolderTile extends StatefulWidget {
final NoteFolder folder; final NotesFolder folder;
final FolderSelectedCallback onFolderSelected; final FolderSelectedCallback onFolderSelected;
FolderTile(this.folder, this.onFolderSelected); FolderTile(this.folder, this.onFolderSelected);