Allow the 'created' YAML metadata to be configured

Related to #206
This commit is contained in:
Vishesh Handa
2020-08-03 00:46:41 +02:00
parent e09ea4313b
commit c5deb3e988
4 changed files with 43 additions and 7 deletions

View File

@ -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:

View File

@ -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

View File

@ -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"),

View File

@ -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":