mirror of
https://github.com/GitJournal/GitJournal.git
synced 2025-06-29 18:38:36 +08:00
Move Folder loading logic inside NoteFolder
This commit is contained in:
@ -1,3 +1,5 @@
|
|||||||
|
import 'dart:io';
|
||||||
|
|
||||||
import 'package:gitjournal/note.dart';
|
import 'package:gitjournal/note.dart';
|
||||||
|
|
||||||
class NoteFSEntity {
|
class NoteFSEntity {
|
||||||
@ -37,4 +39,30 @@ class NoteFolder {
|
|||||||
}
|
}
|
||||||
return notes;
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
import 'dart:io';
|
|
||||||
|
|
||||||
import 'package:fimber/fimber.dart';
|
import 'package:fimber/fimber.dart';
|
||||||
import 'package:flutter/foundation.dart';
|
import 'package:flutter/foundation.dart';
|
||||||
@ -77,41 +76,14 @@ class GitNoteRepository {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Future<List<Note>> listNotes() async {
|
Future<List<Note>> listNotes() async {
|
||||||
var noteFolder = await loadFolder(NoteFolder(notesBasePath));
|
var noteFolder = NoteFolder(notesBasePath);
|
||||||
|
await noteFolder.load();
|
||||||
var notes = noteFolder.getAllNotes();
|
var notes = noteFolder.getAllNotes();
|
||||||
notes.sort((a, b) => b.compareTo(a));
|
notes.sort((a, b) => b.compareTo(a));
|
||||||
|
|
||||||
return notes;
|
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 {
|
Future<bool> sync() async {
|
||||||
try {
|
try {
|
||||||
await _gitRepo.pull();
|
await _gitRepo.pull();
|
||||||
|
Reference in New Issue
Block a user