mirror of
https://github.com/GitJournal/GitJournal.git
synced 2025-06-29 10:17:16 +08:00
Move some classes into another folder
Just giving some more structure
This commit is contained in:
@ -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<bool> sync();
|
|
||||||
|
|
||||||
Future<bool> addNote(Note note);
|
|
||||||
Future<bool> updateNote(Note note);
|
|
||||||
Future<bool> removeNote(Note note);
|
|
||||||
|
|
||||||
Future<List<Note>> listNotes();
|
|
||||||
}
|
|
||||||
|
|
||||||
Future<Directory> 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<bool> addNote(Note note) async {
|
|
||||||
return _fileStorage.addNote(note);
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
Future<List<Note>> listNotes() {
|
|
||||||
return _fileStorage.listNotes();
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
Future<bool> removeNote(Note note) async {
|
|
||||||
return _fileStorage.removeNote(note);
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
Future<bool> sync() async {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
Future<bool> updateNote(Note note) async {
|
|
||||||
return _fileStorage.updateNote(note);
|
|
||||||
}
|
|
||||||
}
|
|
@ -3,14 +3,14 @@ import 'dart:io';
|
|||||||
|
|
||||||
import 'package:flutter/foundation.dart';
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:flutter/material.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_provider/path_provider.dart';
|
||||||
import 'package:path/path.dart' as p;
|
import 'package:path/path.dart' as p;
|
||||||
import 'package:uuid/uuid.dart';
|
import 'package:uuid/uuid.dart';
|
||||||
|
|
||||||
import 'package:journal/note.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<Directory> getNotesDir() async {
|
Future<Directory> getNotesDir() async {
|
||||||
var appDir = await getApplicationDocumentsDirectory();
|
var appDir = await getApplicationDocumentsDirectory();
|
||||||
|
@ -2,14 +2,14 @@ import 'dart:async';
|
|||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
|
|
||||||
import 'package:flutter/foundation.dart';
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:journal/notes_repository.dart';
|
import 'package:journal/note.dart';
|
||||||
import 'package:journal/serializers.dart';
|
import 'package:journal/storage/notes_repository.dart';
|
||||||
|
import 'package:journal/storage/serializers.dart';
|
||||||
import 'package:path/path.dart' as p;
|
import 'package:path/path.dart' as p;
|
||||||
|
|
||||||
import './note.dart';
|
|
||||||
|
|
||||||
typedef String NoteFileNameGenerator(Note note);
|
typedef String NoteFileNameGenerator(Note note);
|
||||||
|
|
||||||
|
/// Each Note is saved in a different file
|
||||||
class FileStorage implements NoteRepository {
|
class FileStorage implements NoteRepository {
|
||||||
final Future<Directory> Function() getDirectory;
|
final Future<Directory> Function() getDirectory;
|
||||||
final NoteSerializer noteSerializer;
|
final NoteSerializer noteSerializer;
|
13
lib/storage/notes_repository.dart
Normal file
13
lib/storage/notes_repository.dart
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
import 'dart:async';
|
||||||
|
import 'package:journal/note.dart';
|
||||||
|
|
||||||
|
abstract class NoteRepository {
|
||||||
|
// TODO: Better error message!
|
||||||
|
Future<bool> sync();
|
||||||
|
|
||||||
|
Future<bool> addNote(Note note);
|
||||||
|
Future<bool> updateNote(Note note);
|
||||||
|
Future<bool> removeNote(Note note);
|
||||||
|
|
||||||
|
Future<List<Note>> listNotes();
|
||||||
|
}
|
Reference in New Issue
Block a user