Remove another case of the Settings singleton

This commit is contained in:
Vishesh Handa
2020-09-25 01:04:18 +02:00
parent eb4d99338b
commit b72e4719d2
5 changed files with 60 additions and 12 deletions

View File

@ -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<String, dynamic> extraProps = const {}}) {
created = DateTime.now();
_loadState = NoteLoadState.Loaded;
_fileFormat = NoteFileFormat.Markdown;
noteSerializer = NoteSerializer.fromConfig(parent.config);
if (extraProps.isNotEmpty) {
extraProps.forEach((key, value) {

View File

@ -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();

View File

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

View File

@ -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<Settings>(context);
NoteSerializer.fromSettings(settings).encode(note, doc);
NoteSerializer.fromConfig(NotesFolderConfig.fromSettings(null)).encode(note, doc);
var codec = MarkdownYAMLCodec();
var noteStr = codec.encode(doc);

View File

@ -35,6 +35,10 @@ void main() {
fileNameFormat: NoteFileNameFormat.Default,
folder: folder,
yamlHeaderEnabled: true,
yamlCreatedKey: 'created',
yamlModifiedKey: 'modified',
yamlTagsKey: 'tags',
saveTitleInH1: true,
);
await config.saveToFS();