diff --git a/lib/notes_repository.dart b/lib/notes_repository.dart deleted file mode 100644 index 5141dde3..00000000 --- a/lib/notes_repository.dart +++ /dev/null @@ -1,76 +0,0 @@ -import 'dart:async'; -import 'dart:io'; - -import 'package:flutter/foundation.dart'; - -import 'package:journal/file_storage.dart'; -import 'package:journal/note.dart'; -import 'package:journal/serializers.dart'; - -import 'package:path_provider/path_provider.dart'; -import 'package:path/path.dart' as p; - -abstract class NoteRepository { - // Syncs the repo - // - git pull with an auto merge - // - git push - - // TODO: Better error message! - Future sync(); - - Future addNote(Note note); - Future updateNote(Note note); - Future removeNote(Note note); - - Future> listNotes(); -} - -Future getNotesDir() async { - var appDir = await getApplicationDocumentsDirectory(); - var dir = new Directory(p.join(appDir.path, "notes")); - await dir.create(); - - return dir; -} - -class GitNoteRepository implements NoteRepository { - FileStorage _fileStorage = new FileStorage( - getDirectory: getNotesDir, - noteSerializer: new MarkdownYAMLSerializer(), - fileNameGenerator: (Note note) => note.id, - ); - final String gitUrl; - final String dirPath; - - GitNoteRepository({ - @required this.gitUrl, - @required this.dirPath, - }) { - // FIXME: This isn't correct. The gitUrl might not be cloned at this point! - } - - @override - Future addNote(Note note) async { - return _fileStorage.addNote(note); - } - - @override - Future> listNotes() { - return _fileStorage.listNotes(); - } - - @override - Future removeNote(Note note) async { - return _fileStorage.removeNote(note); - } - - @override - Future sync() async { - return false; - } - - @override - Future updateNote(Note note) async { - return _fileStorage.updateNote(note); - } -} diff --git a/lib/state_container.dart b/lib/state_container.dart index 35daf236..27bbd96f 100644 --- a/lib/state_container.dart +++ b/lib/state_container.dart @@ -3,14 +3,14 @@ import 'dart:io'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; -import 'package:journal/notes_repository.dart'; -import 'package:journal/serializers.dart'; import 'package:path_provider/path_provider.dart'; import 'package:path/path.dart' as p; import 'package:uuid/uuid.dart'; import 'package:journal/note.dart'; -import 'package:journal/file_storage.dart'; +import 'package:journal/storage/serializers.dart'; +import 'package:journal/storage/notes_repository.dart'; +import 'package:journal/storage/file_storage.dart'; Future getNotesDir() async { var appDir = await getApplicationDocumentsDirectory(); diff --git a/lib/file_storage.dart b/lib/storage/file_storage.dart similarity index 90% rename from lib/file_storage.dart rename to lib/storage/file_storage.dart index 386c5237..e0a4cda7 100644 --- a/lib/file_storage.dart +++ b/lib/storage/file_storage.dart @@ -2,14 +2,14 @@ import 'dart:async'; import 'dart:io'; import 'package:flutter/foundation.dart'; -import 'package:journal/notes_repository.dart'; -import 'package:journal/serializers.dart'; +import 'package:journal/note.dart'; +import 'package:journal/storage/notes_repository.dart'; +import 'package:journal/storage/serializers.dart'; import 'package:path/path.dart' as p; -import './note.dart'; - typedef String NoteFileNameGenerator(Note note); +/// Each Note is saved in a different file class FileStorage implements NoteRepository { final Future Function() getDirectory; final NoteSerializer noteSerializer; diff --git a/lib/storage/notes_repository.dart b/lib/storage/notes_repository.dart new file mode 100644 index 00000000..b8de586e --- /dev/null +++ b/lib/storage/notes_repository.dart @@ -0,0 +1,13 @@ +import 'dart:async'; +import 'package:journal/note.dart'; + +abstract class NoteRepository { + // TODO: Better error message! + Future sync(); + + Future addNote(Note note); + Future updateNote(Note note); + Future removeNote(Note note); + + Future> listNotes(); +} diff --git a/lib/serializers.dart b/lib/storage/serializers.dart similarity index 100% rename from lib/serializers.dart rename to lib/storage/serializers.dart