diff --git a/lib/note.dart b/lib/note.dart index d36e159c..8c0d78b2 100644 --- a/lib/note.dart +++ b/lib/note.dart @@ -12,7 +12,7 @@ enum NoteLoadState { class Note implements Comparable { String filePath = ""; - DateTime created; + DateTime _created; NoteData _data = NoteData(); DateTime _fileLastModified; @@ -21,7 +21,21 @@ class Note implements Comparable { var _serializer = MarkdownYAMLSerializer(); Note([this.filePath]) { - created = created ?? DateTime(0, 0, 0, 0, 0, 0, 0, 0); + _created = _created ?? DateTime(0, 0, 0, 0, 0, 0, 0, 0); + } + + DateTime get created { + return _created; + } + + set created(DateTime dt) { + _created = dt; + + if (hasValidDate()) { + _data.props['created'] = toIso8601WithTimezone(created); + } else { + _data.props.remove('created'); + } } String get body { @@ -42,24 +56,24 @@ class Note implements Comparable { if (data.props.containsKey("created")) { var createdStr = data.props['created'].toString(); try { - created = DateTime.parse(data.props['created']).toLocal(); + _created = DateTime.parse(data.props['created']).toLocal(); } catch (ex) { // Ignore it } - if (created == null) { + if (_created == null) { var regex = RegExp( r"(\d{4})-(\d{2})-(\d{2})T(\d{2})\:(\d{2})\:(\d{2})\+(\d{2})\:(\d{2})"); if (regex.hasMatch(createdStr)) { // FIXME: Handle the timezone! createdStr = createdStr.substring(0, 19); - created = DateTime.parse(createdStr); + _created = DateTime.parse(createdStr); } } } - if (created == null) { - created = DateTime(0, 0, 0, 0, 0, 0, 0, 0); + if (_created == null) { + _created = DateTime(0, 0, 0, 0, 0, 0, 0, 0); } } @@ -102,10 +116,6 @@ class Note implements Comparable { assert(data.body != null); assert(data.props != null); - if (hasValidDate()) { - data.props['created'] = toIso8601WithTimezone(created); - } - var file = File(filePath); var contents = _serializer.encode(data); await file.writeAsString(contents); diff --git a/test/note_storage_test.dart b/test/note_storage_test.dart index 83b62413..e37fee39 100644 --- a/test/note_storage_test.dart +++ b/test/note_storage_test.dart @@ -26,7 +26,8 @@ void main() { n2Path = p.join(tempDir.path, "2.md"); var n1 = Note(n1Path); - n1.data = NoteData("test", props); + n1.body = "test"; + n1.created = dt; var n2 = Note(n2Path); n2.data = NoteData("test2", props);