diff --git a/lib/core/note.dart b/lib/core/note.dart index 879d269f..e7bbcab3 100644 --- a/lib/core/note.dart +++ b/lib/core/note.dart @@ -56,8 +56,7 @@ class Note with NotesNotifier { NoteFileFormat _fileFormat; MdYamlDoc _data = MdYamlDoc(); - NoteSerializer noteSerializer = - NoteSerializer.fromSettings(Settings.instance); + NoteSerializer noteSerializer; DateTime fileLastModified; @@ -73,12 +72,15 @@ class Note with NotesNotifier { static final _mdYamlDocLoader = MdYamlDocLoader(); static final _linksLoader = LinksLoader(); - Note(this.parent, this._filePath); + Note(this.parent, this._filePath) { + noteSerializer = NoteSerializer.fromConfig(parent.config); + } Note.newNote(this.parent, {Map extraProps = const {}}) { created = DateTime.now(); _loadState = NoteLoadState.Loaded; _fileFormat = NoteFileFormat.Markdown; + noteSerializer = NoteSerializer.fromConfig(parent.config); if (extraProps.isNotEmpty) { extraProps.forEach((key, value) { diff --git a/lib/core/note_serializer.dart b/lib/core/note_serializer.dart index 7b5562dc..ef6ed3de 100644 --- a/lib/core/note_serializer.dart +++ b/lib/core/note_serializer.dart @@ -3,7 +3,7 @@ import 'dart:convert'; import 'package:flutter_emoji/flutter_emoji.dart'; import 'package:yaml/yaml.dart'; -import 'package:gitjournal/settings.dart'; +import 'package:gitjournal/core/notes_folder.dart'; import 'package:gitjournal/utils/datetime.dart'; import 'package:gitjournal/utils/logger.dart'; import 'md_yaml_doc.dart'; @@ -32,11 +32,11 @@ class NoteSerializationSettings { 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.fromConfig(NotesFolderConfig config) { + settings.modifiedKey = config.yamlModifiedKey; + settings.createdKey = config.yamlCreatedKey; + settings.tagsKey = config.yamlTagsKey; + settings.saveTitleAsH1 = config.saveTitleInH1; } NoteSerializer.raw(); diff --git a/lib/core/notes_folder_config.dart b/lib/core/notes_folder_config.dart index 499dee43..7a830341 100644 --- a/lib/core/notes_folder_config.dart +++ b/lib/core/notes_folder_config.dart @@ -29,6 +29,11 @@ class NotesFolderConfig extends Equatable { final bool yamlHeaderEnabled; //int _version = 1; + final String yamlModifiedKey; + final String yamlCreatedKey; + final String yamlTagsKey; + final bool saveTitleInH1; + NotesFolderConfig({ @required this.sortingMode, @required this.defaultEditor, @@ -38,6 +43,10 @@ class NotesFolderConfig extends Equatable { @required this.fileNameFormat, @required this.folder, @required this.yamlHeaderEnabled, + @required this.yamlModifiedKey, + @required this.yamlCreatedKey, + @required this.yamlTagsKey, + @required this.saveTitleInH1, }); @override @@ -49,6 +58,10 @@ class NotesFolderConfig extends Equatable { fileNameFormat, folder, yamlHeaderEnabled, + yamlModifiedKey, + yamlCreatedKey, + yamlTagsKey, + saveTitleInH1, ]; static NotesFolderConfig fromSettings(NotesFolderFS folder) { @@ -76,6 +89,10 @@ class NotesFolderConfig extends Equatable { fileNameFormat: settings.noteFileNameFormat, folder: folder, yamlHeaderEnabled: settings.yamlHeaderEnabled, + yamlCreatedKey: settings.yamlCreatedKey, + yamlModifiedKey: settings.yamlModifiedKey, + yamlTagsKey: settings.yamlTagsKey, + saveTitleInH1: settings.saveTitleInH1, ); } @@ -104,6 +121,10 @@ class NotesFolderConfig extends Equatable { settings.folderViewHeaderType = ht; settings.noteFileNameFormat = fileNameFormat; settings.yamlHeaderEnabled = yamlHeaderEnabled; + settings.yamlCreatedKey = yamlCreatedKey; + settings.yamlModifiedKey = yamlModifiedKey; + settings.yamlTagsKey = yamlTagsKey; + settings.saveTitleInH1 = saveTitleInH1; settings.save(); } @@ -116,6 +137,10 @@ class NotesFolderConfig extends Equatable { NoteFileNameFormat fileNameFormat, NotesFolderFS folder, bool yamlHeaderEnabled, + String yamlCreatedKey, + String yamlModifiedKey, + String yamlTagsKey, + bool saveTitleInH1, }) { return NotesFolderConfig( sortingMode: sortingMode ?? this.sortingMode, @@ -126,6 +151,10 @@ class NotesFolderConfig extends Equatable { fileNameFormat: fileNameFormat ?? this.fileNameFormat, folder: folder ?? this.folder, yamlHeaderEnabled: yamlHeaderEnabled ?? this.yamlHeaderEnabled, + yamlCreatedKey: yamlCreatedKey ?? this.yamlCreatedKey, + yamlModifiedKey: yamlModifiedKey ?? this.yamlModifiedKey, + yamlTagsKey: yamlTagsKey ?? this.yamlTagsKey, + saveTitleInH1: saveTitleInH1 ?? this.saveTitleInH1, ); } @@ -174,7 +203,12 @@ class NotesFolderConfig extends Equatable { } var fileNameFormat = map['noteFileNameFormat']?.toString(); - var yamlHeaderEnabled = map["yamlHeaderEnabled"].toString() != "false"; + var yamlHeaderEnabled = map["yamlHeaderEnabled"]?.toString() != "false"; + + var yamlCreatedKey = map['yamlCreatedKey']?.toString(); + var yamlModifiedKey = map['yamlModifiedKey']?.toString(); + var yamlTagsKey = map['yamlTagsKey']?.toString(); + var saveTitleInH1 = map['saveTitleInH1']?.toString() != "false"; return NotesFolderConfig( defaultEditor: defaultEditor.toEditorType(), @@ -185,6 +219,10 @@ class NotesFolderConfig extends Equatable { fileNameFormat: NoteFileNameFormat.fromInternalString(fileNameFormat), folder: folder, yamlHeaderEnabled: yamlHeaderEnabled, + yamlCreatedKey: yamlCreatedKey, + yamlModifiedKey: yamlModifiedKey, + yamlTagsKey: yamlTagsKey, + saveTitleInH1: saveTitleInH1, ); } @@ -213,6 +251,10 @@ class NotesFolderConfig extends Equatable { "folderViewHeaderType": ht, "noteFileNameFormat": fileNameFormat.toInternalString(), 'yamlHeaderEnabled': yamlHeaderEnabled, + 'yamlModifiedKey': yamlModifiedKey, + 'yamlCreatedKey': yamlCreatedKey, + 'yamlTagsKey': yamlTagsKey, + 'saveTitleInH1': saveTitleInH1, }; var yaml = toYAML(map); diff --git a/lib/screens/settings_note_metadata.dart b/lib/screens/settings_note_metadata.dart index 21460bcb..a6dcdf5c 100644 --- a/lib/screens/settings_note_metadata.dart +++ b/lib/screens/settings_note_metadata.dart @@ -8,6 +8,7 @@ import 'package:gitjournal/core/md_yaml_doc.dart'; import 'package:gitjournal/core/md_yaml_doc_codec.dart'; import 'package:gitjournal/core/note.dart'; import 'package:gitjournal/core/note_serializer.dart'; +import 'package:gitjournal/core/notes_folder.dart'; import 'package:gitjournal/core/notes_folder_fs.dart'; import 'package:gitjournal/editors/note_body_editor.dart'; import 'package:gitjournal/editors/note_title_editor.dart'; @@ -206,8 +207,7 @@ class NoteOutputExample extends StatelessWidget { style = style.copyWith(fontFamily: "Roboto Mono"); var doc = MdYamlDoc(); - var settings = Provider.of(context); - NoteSerializer.fromSettings(settings).encode(note, doc); + NoteSerializer.fromConfig(NotesFolderConfig.fromSettings(null)).encode(note, doc); var codec = MarkdownYAMLCodec(); var noteStr = codec.encode(doc); diff --git a/test/notes_folder_config_test.dart b/test/notes_folder_config_test.dart index 88746ca1..27b64013 100644 --- a/test/notes_folder_config_test.dart +++ b/test/notes_folder_config_test.dart @@ -35,6 +35,10 @@ void main() { fileNameFormat: NoteFileNameFormat.Default, folder: folder, yamlHeaderEnabled: true, + yamlCreatedKey: 'created', + yamlModifiedKey: 'modified', + yamlTagsKey: 'tags', + saveTitleInH1: true, ); await config.saveToFS();