NoteSerializer: Avoid using Settings.instance

This commit is contained in:
Vishesh Handa
2020-08-09 01:50:52 +02:00
parent 633d9f5744
commit 9c01b8a931
4 changed files with 21 additions and 11 deletions

View File

@ -50,7 +50,7 @@ class Note with NotesNotifier {
NoteFileFormat _fileFormat;
MdYamlDoc _data = MdYamlDoc();
NoteSerializer noteSerializer = NoteSerializer();
NoteSerializer noteSerializer = NoteSerializer.fromSettings(Settings.instance);
DateTime fileLastModified;

View File

@ -17,18 +17,27 @@ abstract class NoteSerializerInterface {
var emojiParser = EmojiParser();
class NoteSerializationSettings {
String modifiedKey = Settings.instance.yamlModifiedKey;
String createdKey = Settings.instance.yamlCreatedKey;
String modifiedKey = "modified";
String createdKey = "created";
String titleKey = "title";
String typeKey = "type";
String tagsKey = Settings.instance.yamlTagsKey;
String tagsKey = "tags";
bool saveTitleAsH1 = Settings.instance.saveTitleInH1;
bool saveTitleAsH1 = true;
}
class NoteSerializer implements NoteSerializerInterface {
var settings = NoteSerializationSettings();
NoteSerializer.fromSettings(Settings globalSettings) {
settings.modifiedKey = globalSettings.yamlModifiedKey;
settings.createdKey = globalSettings.yamlCreatedKey;
settings.tagsKey = globalSettings.yamlTagsKey;
settings.saveTitleAsH1 = globalSettings.saveTitleInH1;
}
NoteSerializer.raw();
@override
void encode(Note note, MdYamlDoc data) {
data.body = emojiParser.unemojify(note.body);

View File

@ -167,7 +167,8 @@ class NoteOutputExample extends StatelessWidget {
style = style.copyWith(fontFamily: "Roboto Mono");
var doc = MdYamlDoc();
NoteSerializer().encode(note, doc);
var settings = Provider.of<Settings>(context);
NoteSerializer.fromSettings(settings).encode(note, doc);
var codec = MarkdownYAMLCodec();
var noteStr = codec.encode(doc);

View File

@ -13,7 +13,7 @@ void main() {
<String, dynamic>{"title": "Why not :coffee:?"});
var doc = MdYamlDoc("I :heart: you", props);
var serializer = NoteSerializer();
var serializer = NoteSerializer.raw();
serializer.settings.saveTitleAsH1 = false;
var note = Note(null, "file-path-not-important");
@ -34,7 +34,7 @@ void main() {
var props = <String, dynamic>{};
var doc = MdYamlDoc("# Why not :coffee:?\n\nI :heart: you", props);
var serializer = NoteSerializer();
var serializer = NoteSerializer.raw();
serializer.settings.saveTitleAsH1 = true;
var note = Note(null, "file-path-not-important");
@ -55,7 +55,7 @@ void main() {
var props = <String, dynamic>{};
var doc = MdYamlDoc("\n# Why not :coffee:?\n\nI :heart: you", props);
var serializer = NoteSerializer();
var serializer = NoteSerializer.raw();
var note = Note(null, "file-path-not-important");
serializer.decode(doc, note);
@ -68,7 +68,7 @@ void main() {
var props = <String, dynamic>{};
var doc = MdYamlDoc("\n# Why not :coffee:?", props);
var serializer = NoteSerializer();
var serializer = NoteSerializer.raw();
var note = Note(null, "file-path-not-important");
serializer.decode(doc, note);
@ -82,7 +82,7 @@ void main() {
<String, dynamic>{"title": "Why not :coffee:?"});
var doc = MdYamlDoc("I :heart: you", props);
var serializer = NoteSerializer();
var serializer = NoteSerializer.raw();
serializer.settings.saveTitleAsH1 = true;
var note = Note(null, "file-path-not-important");