mirror of
https://github.com/GitJournal/GitJournal.git
synced 2025-06-26 16:46:51 +08:00
Split NoteData and its serializer into its own file
This commit is contained in:
@ -3,10 +3,11 @@ import 'dart:io';
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:path/path.dart' as p;
|
import 'package:path/path.dart' as p;
|
||||||
|
|
||||||
|
import 'note_data.dart';
|
||||||
|
import 'note_data_serializers.dart';
|
||||||
import 'note_fileName.dart';
|
import 'note_fileName.dart';
|
||||||
import 'note_serializer.dart';
|
import 'note_serializer.dart';
|
||||||
import 'notes_folder.dart';
|
import 'notes_folder.dart';
|
||||||
import 'serializers.dart';
|
|
||||||
|
|
||||||
enum NoteLoadState {
|
enum NoteLoadState {
|
||||||
None,
|
None,
|
||||||
|
34
lib/core/note_data.dart
Normal file
34
lib/core/note_data.dart
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
import 'dart:collection';
|
||||||
|
|
||||||
|
class NoteData {
|
||||||
|
String body = "";
|
||||||
|
LinkedHashMap<String, dynamic> props = LinkedHashMap<String, dynamic>();
|
||||||
|
|
||||||
|
NoteData([this.body, this.props]) {
|
||||||
|
body = body ?? "";
|
||||||
|
// ignore: prefer_collection_literals
|
||||||
|
props = props ?? LinkedHashMap<String, dynamic>();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
int get hashCode => body.hashCode ^ props.hashCode;
|
||||||
|
|
||||||
|
@override
|
||||||
|
bool operator ==(Object other) =>
|
||||||
|
identical(this, other) ||
|
||||||
|
other is NoteData &&
|
||||||
|
runtimeType == other.runtimeType &&
|
||||||
|
body == other.body &&
|
||||||
|
_equalMaps(props, other.props);
|
||||||
|
|
||||||
|
static bool _equalMaps(Map a, Map b) {
|
||||||
|
if (a.length != b.length) return false;
|
||||||
|
return a.keys
|
||||||
|
.every((dynamic key) => b.containsKey(key) && a[key] == b[key]);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
String toString() {
|
||||||
|
return 'NoteData{body: $body, props: $props}';
|
||||||
|
}
|
||||||
|
}
|
@ -4,38 +4,7 @@ import 'package:fimber/fimber.dart';
|
|||||||
import 'package:yaml/yaml.dart';
|
import 'package:yaml/yaml.dart';
|
||||||
import 'package:yaml_serializer/yaml_serializer.dart';
|
import 'package:yaml_serializer/yaml_serializer.dart';
|
||||||
|
|
||||||
class NoteData {
|
import 'note_data.dart';
|
||||||
String body = "";
|
|
||||||
LinkedHashMap<String, dynamic> props = LinkedHashMap<String, dynamic>();
|
|
||||||
|
|
||||||
NoteData([this.body, this.props]) {
|
|
||||||
body = body ?? "";
|
|
||||||
// ignore: prefer_collection_literals
|
|
||||||
props = props ?? LinkedHashMap<String, dynamic>();
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
int get hashCode => body.hashCode ^ props.hashCode;
|
|
||||||
|
|
||||||
@override
|
|
||||||
bool operator ==(Object other) =>
|
|
||||||
identical(this, other) ||
|
|
||||||
other is NoteData &&
|
|
||||||
runtimeType == other.runtimeType &&
|
|
||||||
body == other.body &&
|
|
||||||
_equalMaps(props, other.props);
|
|
||||||
|
|
||||||
static bool _equalMaps(Map a, Map b) {
|
|
||||||
if (a.length != b.length) return false;
|
|
||||||
return a.keys
|
|
||||||
.every((dynamic key) => b.containsKey(key) && a[key] == b[key]);
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
String toString() {
|
|
||||||
return 'NoteData{body: $body, props: $props}';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
abstract class NoteDataSerializer {
|
abstract class NoteDataSerializer {
|
||||||
String encode(NoteData note);
|
String encode(NoteData note);
|
@ -1,7 +1,7 @@
|
|||||||
import 'package:gitjournal/utils/datetime.dart';
|
import 'package:gitjournal/utils/datetime.dart';
|
||||||
|
|
||||||
import 'note.dart';
|
import 'note.dart';
|
||||||
import 'serializers.dart';
|
import 'note_data.dart';
|
||||||
|
|
||||||
abstract class NoteSerializerInterface {
|
abstract class NoteSerializerInterface {
|
||||||
void encode(Note note, NoteData data);
|
void encode(Note note, NoteData data);
|
||||||
|
@ -4,7 +4,8 @@ import 'package:gitjournal/core/note.dart';
|
|||||||
import 'package:gitjournal/core/notes_folder.dart';
|
import 'package:gitjournal/core/notes_folder.dart';
|
||||||
import 'package:gitjournal/state_container.dart';
|
import 'package:gitjournal/state_container.dart';
|
||||||
import 'package:gitjournal/widgets/journal_editor_header.dart';
|
import 'package:gitjournal/widgets/journal_editor_header.dart';
|
||||||
import 'package:gitjournal/core/serializers.dart';
|
import 'package:gitjournal/core/note_data.dart';
|
||||||
|
import 'package:gitjournal/core/note_data_serializers.dart';
|
||||||
|
|
||||||
enum NoteEditorDropDownChoices { Discard, SwitchEditor }
|
enum NoteEditorDropDownChoices { Discard, SwitchEditor }
|
||||||
|
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
import 'dart:collection';
|
import 'dart:collection';
|
||||||
|
|
||||||
import 'package:gitjournal/core/serializers.dart';
|
import 'package:gitjournal/core/note_data.dart';
|
||||||
|
import 'package:gitjournal/core/note_data_serializers.dart';
|
||||||
import 'package:gitjournal/utils/datetime.dart';
|
import 'package:gitjournal/utils/datetime.dart';
|
||||||
import 'package:test/test.dart';
|
import 'package:test/test.dart';
|
||||||
|
|
@ -3,7 +3,7 @@ import 'dart:io';
|
|||||||
|
|
||||||
import 'package:gitjournal/utils/datetime.dart';
|
import 'package:gitjournal/utils/datetime.dart';
|
||||||
import 'package:gitjournal/core/note.dart';
|
import 'package:gitjournal/core/note.dart';
|
||||||
import 'package:gitjournal/core/serializers.dart';
|
import 'package:gitjournal/core/note_data.dart';
|
||||||
import 'package:path/path.dart' as p;
|
import 'package:path/path.dart' as p;
|
||||||
import 'package:test/test.dart';
|
import 'package:test/test.dart';
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user