diff --git a/assets/langs/en.yaml b/assets/langs/en.yaml index 51063bd9..6e401a67 100644 --- a/assets/langs/en.yaml +++ b/assets/langs/en.yaml @@ -43,6 +43,7 @@ settings: text: Every note has some metadata which is stored in a YAML Header as follows - enableHeader: Enable YAML Header modified: Modified Field + created: Created Field example: title: Example Title titleMetaData: diff --git a/lib/core/note_serializer.dart b/lib/core/note_serializer.dart index 890c1b4f..9ff79ed8 100644 --- a/lib/core/note_serializer.dart +++ b/lib/core/note_serializer.dart @@ -18,7 +18,7 @@ var emojiParser = EmojiParser(); class NoteSerializationSettings { String modifiedKey = Settings.instance.yamlModifiedKey; - String createdKey = "created"; + String createdKey = Settings.instance.yamlCreatedKey; String titleKey = "title"; String typeKey = "type"; String tagsKey = "tags"; @@ -87,18 +87,29 @@ class NoteSerializer implements NoteSerializerInterface { "lastmodified", "lastmod", ]; - for (var i = 0; i < modifiedKeyOptions.length; i++) { - var possibleKey = modifiedKeyOptions[i]; - var modifiedVal = data.props[possibleKey]; - if (modifiedVal != null) { - note.modified = parseDateTime(modifiedVal.toString()); + for (var possibleKey in modifiedKeyOptions) { + var val = data.props[possibleKey]; + if (val != null) { + note.modified = parseDateTime(val.toString()); settings.modifiedKey = possibleKey; break; } } note.body = emojiParser.emojify(data.body); - note.created = parseDateTime(data.props[settings.createdKey]?.toString()); + + var createdKeyOptions = [ + "created", + "date", + ]; + for (var possibleKey in createdKeyOptions) { + var val = data.props[possibleKey]; + if (val != null) { + note.created = parseDateTime(val.toString()); + settings.createdKey = possibleKey; + break; + } + } // // Title parsing diff --git a/lib/screens/settings_note_metadata.dart b/lib/screens/settings_note_metadata.dart index fff6bbc0..23f607da 100644 --- a/lib/screens/settings_note_metadata.dart +++ b/lib/screens/settings_note_metadata.dart @@ -77,6 +77,23 @@ class _NoteMetadataSettingsScreenState enabled: Settings.instance.yamlHeaderEnabled, ), ), + ProOverlay( + child: ListPreference( + title: tr("settings.noteMetaData.created"), + options: [ + "created", + "date", + ], + currentOption: Settings.instance.yamlCreatedKey, + onChange: (String newVal) { + setState(() { + Settings.instance.yamlCreatedKey = newVal; + Settings.instance.save(); + }); + }, + enabled: Settings.instance.yamlHeaderEnabled, + ), + ), ProOverlay( child: ListPreference( title: tr("settings.noteMetaData.titleMetaData.title"), diff --git a/lib/settings.dart b/lib/settings.dart index 5ee5c96f..b824fc3f 100644 --- a/lib/settings.dart +++ b/lib/settings.dart @@ -21,6 +21,8 @@ class Settings { bool collectCrashReports = true; String yamlModifiedKey = "modified"; + String yamlCreatedKey = "created"; + bool yamlHeaderEnabled = true; String defaultNewNoteFolderSpec = ""; String journalEditordefaultNewNoteFolderSpec = ""; @@ -68,6 +70,8 @@ class Settings { pref.getBool("collectCrashReports") ?? collectCrashReports; yamlModifiedKey = pref.getString("yamlModifiedKey") ?? yamlModifiedKey; + yamlCreatedKey = pref.getString("yamlCreatedKey") ?? yamlCreatedKey; + yamlHeaderEnabled = pref.getBool("yamlHeaderEnabled") ?? yamlHeaderEnabled; defaultNewNoteFolderSpec = pref.getString("defaultNewNoteFolderSpec") ?? defaultNewNoteFolderSpec; @@ -140,6 +144,8 @@ class Settings { defaultSet.collectCrashReports); _setString( pref, "yamlModifiedKey", yamlModifiedKey, defaultSet.yamlModifiedKey); + _setString( + pref, "yamlCreatedKey", yamlCreatedKey, defaultSet.yamlCreatedKey); _setBool(pref, "yamlHeaderEnabled", yamlHeaderEnabled, defaultSet.yamlHeaderEnabled); _setString(pref, "defaultNewNoteFolderSpec", defaultNewNoteFolderSpec, @@ -225,6 +231,7 @@ class Settings { "collectUsageStatistics": collectUsageStatistics.toString(), "collectCrashReports": collectCrashReports.toString(), "yamlModifiedKey": yamlModifiedKey, + "yamlCreatedKey": yamlCreatedKey, "yamlHeaderEnabled": yamlHeaderEnabled.toString(), "defaultNewNoteFolderSpec": defaultNewNoteFolderSpec, "journalEditordefaultNewNoteFolderSpec":