Skip to content

Commit

Permalink
Replace Revision Json serialize/deserialize with json_serializable
Browse files Browse the repository at this point in the history
  • Loading branch information
heejongahn committed Sep 6, 2020
1 parent 7f5e542 commit 5c9124c
Show file tree
Hide file tree
Showing 4 changed files with 11 additions and 43 deletions.
2 changes: 1 addition & 1 deletion lib/models/review.dart
Expand Up @@ -82,7 +82,7 @@ class Review {

review.book = Book.fromJson(map['book'] as Map<String, dynamic>);
review.activeRevision = map['activeRevision'] != null
? Revision.fromPayload(map['activeRevision'] as Map<String, dynamic>)
? Revision.fromJson(map['activeRevision'] as Map<String, dynamic>)
: null;

return review;
Expand Down
48 changes: 8 additions & 40 deletions lib/models/revision.dart
@@ -1,5 +1,8 @@
import 'package:json_annotation/json_annotation.dart';
import 'package:intl/intl.dart';

part 'revision.g.dart';

final formatter = DateFormat('yyyy-MM-dd');

enum ReadingStatus {
Expand All @@ -18,11 +21,13 @@ Map<String, ReadingStatus> readingStatusInverseMap = readingStatusMap.map(
(k, v) => MapEntry(v, k),
);

@JsonSerializable()
class Revision {
String id;
int stars;
String title;
String body;
@JsonKey(defaultValue: ReadingStatus.hasntStarted)
ReadingStatus readingStatus;
final DateTime createdAt;
final DateTime lastModifiedAt;
Expand All @@ -37,47 +42,10 @@ class Revision {
this.lastModifiedAt,
});

static Revision fromPayload(Map<String, dynamic> map) {
final createdAt = map['createdAt'] == null
? null
: DateTime.tryParse(map['createdAt'] as String)?.toLocal();
final lastModifiedAt = map['lastModifiedAt'] == null
? null
: DateTime.tryParse(map['lastModifiedAt'] as String)?.toLocal();

final revision = Revision(
id: map['id'] as String,
stars: map['stars'] as int,
title: map['title'] as String,
body: map['body'] as String,
createdAt: createdAt,
lastModifiedAt: lastModifiedAt,
readingStatus: map['readingStatus'] == null
? ReadingStatus.hasntStarted
: readingStatusInverseMap[map['readingStatus']],
);

return revision;
}

Map<String, dynamic> toMap() {
final now = DateTime.now().toIso8601String();
factory Revision.fromJson(Map<String, dynamic> json) =>
_$RevisionFromJson(json);

final map = <String, dynamic>{
'stars': stars,
'title': title,
'body': body,
'readingStatus': readingStatusMap[readingStatus],
};

map['createdAt'] = createdAt != null ? createdAt.toIso8601String() : now;

if (id != null) {
map['id'] = id;
}

return map;
}
Map<String, dynamic> toJson() => _$RevisionToJson(this);

String get displayReadingStatus {
switch (readingStatus) {
Expand Down
2 changes: 1 addition & 1 deletion lib/remotes/review/create.dart
Expand Up @@ -12,7 +12,7 @@ Future<Review> createReview({

final body = const JsonEncoder().convert({
'reviewPayload': review.toMap(),
'revisionPayload': review.activeRevision?.toMap(),
'revisionPayload': review.activeRevision?.toJson(),
'bookId': review.book.id,
});

Expand Down
2 changes: 1 addition & 1 deletion lib/remotes/review/create_revision.dart
Expand Up @@ -11,7 +11,7 @@ Future<Review> createRevision({
final url = '${env.apiEndpoint}/review/create-revision';

final body = const JsonEncoder().convert({
'revisionPayload': review.activeRevision.toMap(),
'revisionPayload': review.activeRevision.toJson(),
'reviewId': review.id,
});

Expand Down

0 comments on commit 5c9124c

Please sign in to comment.