From 9c01b8a93184465d3d1d7fb38d0a5a6236ad6306 Mon Sep 17 00:00:00 2001 From: Vishesh Handa Date: Sun, 9 Aug 2020 01:50:52 +0200 Subject: [PATCH] NoteSerializer: Avoid using Settings.instance --- lib/core/note.dart | 2 +- lib/core/note_serializer.dart | 17 +++++++++++++---- lib/screens/settings_note_metadata.dart | 3 ++- test/note_serializer_test.dart | 10 +++++----- 4 files changed, 21 insertions(+), 11 deletions(-) diff --git a/lib/core/note.dart b/lib/core/note.dart index 22329b59..eb2a767f 100644 --- a/lib/core/note.dart +++ b/lib/core/note.dart @@ -50,7 +50,7 @@ class Note with NotesNotifier { NoteFileFormat _fileFormat; MdYamlDoc _data = MdYamlDoc(); - NoteSerializer noteSerializer = NoteSerializer(); + NoteSerializer noteSerializer = NoteSerializer.fromSettings(Settings.instance); DateTime fileLastModified; diff --git a/lib/core/note_serializer.dart b/lib/core/note_serializer.dart index 7e6cb7ce..c18c974a 100644 --- a/lib/core/note_serializer.dart +++ b/lib/core/note_serializer.dart @@ -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); diff --git a/lib/screens/settings_note_metadata.dart b/lib/screens/settings_note_metadata.dart index 5d3ea1f5..1eec74e5 100644 --- a/lib/screens/settings_note_metadata.dart +++ b/lib/screens/settings_note_metadata.dart @@ -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(context); + NoteSerializer.fromSettings(settings).encode(note, doc); var codec = MarkdownYAMLCodec(); var noteStr = codec.encode(doc); diff --git a/test/note_serializer_test.dart b/test/note_serializer_test.dart index d6e0cda2..6f637d49 100644 --- a/test/note_serializer_test.dart +++ b/test/note_serializer_test.dart @@ -13,7 +13,7 @@ void main() { {"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 = {}; 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 = {}; 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 = {}; 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() { {"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");