Move Folder loading logic inside NoteFolder

This commit is contained in:
Vishesh Handa
2019-12-01 10:41:35 +01:00
parent 4dbcabb183
commit 3a2a57f985
2 changed files with 30 additions and 30 deletions

View File

@ -1,3 +1,5 @@
import 'dart:io';
import 'package:gitjournal/note.dart';
class NoteFSEntity {
@ -37,4 +39,30 @@ class NoteFolder {
}
return notes;
}
// FIXME: This asynchronously loads everything. Maybe it should just list them, and the individual entities
// should be loaded as required?
Future<void> load() async {
final dir = Directory(folderPath);
var lister = dir.list(recursive: false, followLinks: false);
await for (var fsEntity in lister) {
if (fsEntity is Directory) {
var subFolder = NoteFolder(fsEntity.path);
await subFolder.load();
var noteFSEntity = NoteFSEntity(this, folder: subFolder);
entities.add(noteFSEntity);
}
var note = Note(fsEntity.path);
if (!note.filePath.toLowerCase().endsWith('.md')) {
continue;
}
await note.load();
var noteFSEntity = NoteFSEntity(this, note: note);
entities.add(noteFSEntity);
}
}
}

View File

@ -1,5 +1,4 @@
import 'dart:async';
import 'dart:io';
import 'package:fimber/fimber.dart';
import 'package:flutter/foundation.dart';
@ -77,41 +76,14 @@ class GitNoteRepository {
}
Future<List<Note>> listNotes() async {
var noteFolder = await loadFolder(NoteFolder(notesBasePath));
var noteFolder = NoteFolder(notesBasePath);
await noteFolder.load();
var notes = noteFolder.getAllNotes();
notes.sort((a, b) => b.compareTo(a));
return notes;
}
// FIXME: This asynchronously loads everything. Maybe it should just list them, and the individual entities
// should be loaded as required?
Future<NoteFolder> loadFolder(NoteFolder rootFolder) async {
final dir = Directory(rootFolder.folderPath);
var lister = dir.list(recursive: false, followLinks: false);
await for (var fsEntity in lister) {
if (fsEntity is Directory) {
var subFolder = NoteFolder(fsEntity.path);
subFolder = await loadFolder(subFolder);
var noteFSEntity = NoteFSEntity(rootFolder, folder: subFolder);
rootFolder.entities.add(noteFSEntity);
}
var note = Note(fsEntity.path);
if (!note.filePath.toLowerCase().endsWith('.md')) {
continue;
}
await note.load();
var noteFSEntity = NoteFSEntity(rootFolder, note: note);
rootFolder.entities.add(noteFSEntity);
}
return rootFolder;
}
Future<bool> sync() async {
try {
await _gitRepo.pull();