Add a .gitjournal.yaml file in a folder

This file will be added to save the settings of how we want that folder
to behave. For example - default Editor, view, sorting mode, etc.

This feature is currently disabled as it will only be a part of the pro
mode.
This commit is contained in:
Vishesh Handa
2020-03-31 14:02:38 +02:00
parent 3c2d4b0f74
commit fe08b53539
9 changed files with 118 additions and 15 deletions

View File

@ -1,6 +1,7 @@
import 'dart:io';
import 'package:fimber/fimber.dart';
import 'package:gitjournal/features.dart';
import 'package:path/path.dart' as p;
import 'package:path/path.dart';
import 'package:synchronized/synchronized.dart';
@ -18,6 +19,7 @@ class NotesFolderFS with NotesFolderNotifier implements NotesFolder {
List<NotesFolderFS> _folders = [];
Map<String, dynamic> _entityMap = {};
NotesFolderConfig _config;
NotesFolderFS(this._parent, this._folderPath);
@ -149,6 +151,11 @@ class NotesFolderFS with NotesFolderNotifier implements NotesFolder {
Future<void> _load() async {
Set<String> pathsFound = {};
// Load the Folder config if exists
if (Features.perFolderConfig) {
_config = await NotesFolderConfig.fromFS(this);
}
final dir = Directory(folderPath);
var lister = dir.list(recursive: false, followLinks: false);
await for (var fsEntity in lister) {
@ -344,11 +351,18 @@ class NotesFolderFS with NotesFolderNotifier implements NotesFolder {
@override
NotesFolderConfig get config {
return NotesFolderConfig.fromSettings();
if (Features.perFolderConfig && _config != null) {
return _config;
}
return NotesFolderConfig.fromSettings(this);
}
@override
set config(NotesFolderConfig conf) {
conf.save();
set config(NotesFolderConfig config) {
if (Features.perFolderConfig) {
_config = config;
} else {
config.saveToSettings();
}
}
}