From 76d530ed0810724d9b61bb73b689d6afb23d4ebd Mon Sep 17 00:00:00 2001 From: Jagandeep Brar Date: Mon, 21 Feb 2022 01:23:27 -0500 Subject: [PATCH] refactor(overseerr): utilize JsonEnum generators in enum types [skip ci] --- lib/modules/overseerr/api.dart | 1 - .../overseerr/api/models/media/media.dart | 15 ++---- .../overseerr/api/models/media/season.dart | 12 +---- .../api/models/requests/request.dart | 12 +---- .../overseerr/api/types/media_status.dart | 43 ++++++++-------- .../overseerr/api/types/media_type.dart | 26 +++++----- .../api/types/request_filter_type.dart | 49 +++++++++---------- .../api/types/request_sort_type.dart | 26 +++++----- .../overseerr/api/types/request_status.dart | 29 +++++------ .../overseerr/api/types/user_sort_type.dart | 38 +++++++------- lib/modules/overseerr/api/utilities.dart | 27 ---------- 11 files changed, 102 insertions(+), 176 deletions(-) delete mode 100644 lib/modules/overseerr/api/utilities.dart diff --git a/lib/modules/overseerr/api.dart b/lib/modules/overseerr/api.dart index fa7ab192..72b516b8 100644 --- a/lib/modules/overseerr/api.dart +++ b/lib/modules/overseerr/api.dart @@ -1,4 +1,3 @@ export 'api/overseerr.dart'; export 'api/models.dart'; export 'api/types.dart'; -export 'api/utilities.dart'; diff --git a/lib/modules/overseerr/api/models/media/media.dart b/lib/modules/overseerr/api/models/media/media.dart index 0a168faf..a7c7892e 100644 --- a/lib/modules/overseerr/api/models/media/media.dart +++ b/lib/modules/overseerr/api/models/media/media.dart @@ -8,10 +8,7 @@ class OverseerrMedia { @JsonKey() int? id; - @JsonKey( - fromJson: OverseerrUtilities.mediaTypeFromJson, - toJson: OverseerrUtilities.mediaTypeToJson, - ) + @JsonKey() OverseerrMediaType? mediaType; @JsonKey() @@ -23,16 +20,10 @@ class OverseerrMedia { @JsonKey() String? imdbId; - @JsonKey( - fromJson: OverseerrUtilities.mediaStatusFromJson, - toJson: OverseerrUtilities.mediaStatusToJson, - ) + @JsonKey() OverseerrMediaStatus? status; - @JsonKey( - fromJson: OverseerrUtilities.mediaStatusFromJson, - toJson: OverseerrUtilities.mediaStatusToJson, - ) + @JsonKey() OverseerrMediaStatus? status4k; @JsonKey( diff --git a/lib/modules/overseerr/api/models/media/season.dart b/lib/modules/overseerr/api/models/media/season.dart index 83b692dc..a1a1d913 100644 --- a/lib/modules/overseerr/api/models/media/season.dart +++ b/lib/modules/overseerr/api/models/media/season.dart @@ -11,18 +11,10 @@ class OverseerrMediaSeason { @JsonKey(name: 'seasonNumber') int? seasonNumber; - @JsonKey( - name: 'status', - fromJson: OverseerrUtilities.requestStatusFromJson, - toJson: OverseerrUtilities.requestStatusToJson, - ) + @JsonKey(name: 'status') OverseerrRequestStatus? status; - @JsonKey( - name: 'status4k', - fromJson: OverseerrUtilities.requestStatusFromJson, - toJson: OverseerrUtilities.requestStatusToJson, - ) + @JsonKey(name: 'status4k') OverseerrRequestStatus? status4k; @JsonKey( diff --git a/lib/modules/overseerr/api/models/requests/request.dart b/lib/modules/overseerr/api/models/requests/request.dart index a20a695f..6b2ab9b5 100644 --- a/lib/modules/overseerr/api/models/requests/request.dart +++ b/lib/modules/overseerr/api/models/requests/request.dart @@ -8,11 +8,7 @@ class OverseerrRequest { @JsonKey(name: 'id') int? id; - @JsonKey( - name: 'status', - fromJson: OverseerrUtilities.requestStatusFromJson, - toJson: OverseerrUtilities.requestStatusToJson, - ) + @JsonKey(name: 'status') OverseerrRequestStatus? status; @JsonKey( @@ -29,11 +25,7 @@ class OverseerrRequest { ) DateTime? updatedAt; - @JsonKey( - name: 'type', - fromJson: OverseerrUtilities.mediaTypeFromJson, - toJson: OverseerrUtilities.mediaTypeToJson, - ) + @JsonKey(name: 'type') OverseerrMediaType? type; @JsonKey(name: 'is4k') diff --git a/lib/modules/overseerr/api/types/media_status.dart b/lib/modules/overseerr/api/types/media_status.dart index 791eee54..6f57d670 100644 --- a/lib/modules/overseerr/api/types/media_status.dart +++ b/lib/modules/overseerr/api/types/media_status.dart @@ -1,42 +1,39 @@ +import 'package:lunasea/core.dart'; + +const _UNKNOWN = 1; +const _PENDING = 2; +const _PROCESSING = 3; +const _PARTIALLY_AVAILABLE = 4; +const _AVAILABLE = 5; + +@JsonEnum() enum OverseerrMediaStatus { + @JsonValue(_UNKNOWN) UNKNOWN, + @JsonValue(_PENDING) PENDING, + @JsonValue(_PROCESSING) PROCESSING, + @JsonValue(_PARTIALLY_AVAILABLE) PARTIALLY_AVAILABLE, + @JsonValue(_AVAILABLE) AVAILABLE, } /// Extension on [OverseerrMediaStatus] to implement extended functionality. extension OverseerrMediaStatusExtension on OverseerrMediaStatus { - OverseerrMediaStatus? from(int? type) { - switch (type) { - case 1: - return OverseerrMediaStatus.UNKNOWN; - case 2: - return OverseerrMediaStatus.PENDING; - case 3: - return OverseerrMediaStatus.PROCESSING; - case 4: - return OverseerrMediaStatus.PARTIALLY_AVAILABLE; - case 5: - return OverseerrMediaStatus.AVAILABLE; - default: - return null; - } - } - - int get value { + int get key { switch (this) { case OverseerrMediaStatus.UNKNOWN: - return 1; + return _UNKNOWN; case OverseerrMediaStatus.PENDING: - return 2; + return _PENDING; case OverseerrMediaStatus.PROCESSING: - return 3; + return _PROCESSING; case OverseerrMediaStatus.PARTIALLY_AVAILABLE: - return 4; + return _PARTIALLY_AVAILABLE; case OverseerrMediaStatus.AVAILABLE: - return 5; + return _AVAILABLE; } } } diff --git a/lib/modules/overseerr/api/types/media_type.dart b/lib/modules/overseerr/api/types/media_type.dart index a8600fdc..c104d61f 100644 --- a/lib/modules/overseerr/api/types/media_type.dart +++ b/lib/modules/overseerr/api/types/media_type.dart @@ -1,27 +1,23 @@ +import 'package:lunasea/core.dart'; + +const _MOVIE = 'movie'; +const _TV = 'tv'; + +@JsonEnum() enum OverseerrMediaType { + @JsonValue(_MOVIE) MOVIE, + @JsonValue(_TV) TV, } -/// Extension on [OverseerrMediaType] to implement extended functionality. extension OverseerrMediaTypeExtension on OverseerrMediaType { - OverseerrMediaType? from(String? type) { - switch (type) { - case 'movie': - return OverseerrMediaType.MOVIE; - case 'tv': - return OverseerrMediaType.TV; - default: - return null; - } - } - - String get value { + String get key { switch (this) { case OverseerrMediaType.MOVIE: - return 'movie'; + return _MOVIE; case OverseerrMediaType.TV: - return 'tv'; + return _TV; } } } diff --git a/lib/modules/overseerr/api/types/request_filter_type.dart b/lib/modules/overseerr/api/types/request_filter_type.dart index f9979452..45e4b757 100644 --- a/lib/modules/overseerr/api/types/request_filter_type.dart +++ b/lib/modules/overseerr/api/types/request_filter_type.dart @@ -1,47 +1,44 @@ +import 'package:lunasea/core.dart'; + +const _ALL = 'all'; +const _APPROVED = 'approved'; +const _AVAILABLE = 'available'; +const _PENDING = 'pending'; +const _PROCESSING = 'processing'; +const _UNAVAILABLE = 'unavailable'; + +@JsonEnum() enum OverseerrRequestFilterType { + @JsonValue(_ALL) ALL, + @JsonValue(_APPROVED) APPROVED, + @JsonValue(_AVAILABLE) AVAILABLE, + @JsonValue(_PENDING) PENDING, + @JsonValue(_PROCESSING) PROCESSING, + @JsonValue(_UNAVAILABLE) UNAVAILABLE, } /// Extension on [OverseerrRequestFilterType] to implement extended functionality. extension OverseerrRequestFilterTypeExtension on OverseerrRequestFilterType { - OverseerrRequestFilterType? from(String? type) { - switch (type) { - case 'all': - return OverseerrRequestFilterType.ALL; - case 'approved': - return OverseerrRequestFilterType.APPROVED; - case 'available': - return OverseerrRequestFilterType.AVAILABLE; - case 'pending': - return OverseerrRequestFilterType.PENDING; - case 'processing': - return OverseerrRequestFilterType.PROCESSING; - case 'unavailable': - return OverseerrRequestFilterType.UNAVAILABLE; - default: - return null; - } - } - - String get value { + String get key { switch (this) { case OverseerrRequestFilterType.ALL: - return 'all'; + return _ALL; case OverseerrRequestFilterType.APPROVED: - return 'approved'; + return _APPROVED; case OverseerrRequestFilterType.AVAILABLE: - return 'available'; + return _AVAILABLE; case OverseerrRequestFilterType.PENDING: - return 'pending'; + return _PENDING; case OverseerrRequestFilterType.PROCESSING: - return 'processing'; + return _PROCESSING; case OverseerrRequestFilterType.UNAVAILABLE: - return 'unavailable'; + return _UNAVAILABLE; } } } diff --git a/lib/modules/overseerr/api/types/request_sort_type.dart b/lib/modules/overseerr/api/types/request_sort_type.dart index 4412074e..390b2324 100644 --- a/lib/modules/overseerr/api/types/request_sort_type.dart +++ b/lib/modules/overseerr/api/types/request_sort_type.dart @@ -1,27 +1,23 @@ +import 'package:lunasea/core.dart'; + +const _ADDED = 'added'; +const _MODIFIED = 'modified'; + +@JsonEnum() enum OverseerrRequestSortType { + @JsonValue(_ADDED) ADDED, + @JsonValue(_MODIFIED) MODIFIED, } -/// Extension on [OverseerrRequestSortType] to implement extended functionality. extension OverseerrRequestSortTypeExtension on OverseerrRequestSortType { - OverseerrRequestSortType? from(String? type) { - switch (type) { - case 'added': - return OverseerrRequestSortType.ADDED; - case 'modified': - return OverseerrRequestSortType.MODIFIED; - default: - return null; - } - } - - String get value { + String get key { switch (this) { case OverseerrRequestSortType.ADDED: - return 'added'; + return _ADDED; case OverseerrRequestSortType.MODIFIED: - return 'modified'; + return _MODIFIED; } } } diff --git a/lib/modules/overseerr/api/types/request_status.dart b/lib/modules/overseerr/api/types/request_status.dart index 87dfdf83..16fe7e6a 100644 --- a/lib/modules/overseerr/api/types/request_status.dart +++ b/lib/modules/overseerr/api/types/request_status.dart @@ -1,32 +1,29 @@ +import 'package:lunasea/core.dart'; + +const _PENDING = 1; +const _APPROVED = 2; +const _DECLINED = 3; + +@JsonEnum() enum OverseerrRequestStatus { + @JsonValue(_PENDING) PENDING, + @JsonValue(_APPROVED) APPROVED, + @JsonValue(_DECLINED) DECLINED, } /// Extension on [OverseerrRequestStatus] to implement extended functionality. extension OverseerrRequestStatusExtension on OverseerrRequestStatus { - OverseerrRequestStatus? from(int? type) { - switch (type) { - case 1: - return OverseerrRequestStatus.PENDING; - case 2: - return OverseerrRequestStatus.APPROVED; - case 3: - return OverseerrRequestStatus.DECLINED; - default: - return null; - } - } - int get value { switch (this) { case OverseerrRequestStatus.PENDING: - return 1; + return _PENDING; case OverseerrRequestStatus.APPROVED: - return 2; + return _APPROVED; case OverseerrRequestStatus.DECLINED: - return 3; + return _DECLINED; } } } diff --git a/lib/modules/overseerr/api/types/user_sort_type.dart b/lib/modules/overseerr/api/types/user_sort_type.dart index 0c68075b..0fb13ccc 100644 --- a/lib/modules/overseerr/api/types/user_sort_type.dart +++ b/lib/modules/overseerr/api/types/user_sort_type.dart @@ -1,37 +1,33 @@ +import 'package:lunasea/core.dart'; + +const _CREATED = 'created'; +const _DISPLAY_NAME = 'displayname'; +const _REQUESTS = 'requests'; +const _UPDATED = 'updated'; + +@JsonEnum() enum OverseerrUserSortType { + @JsonValue(_CREATED) CREATED, + @JsonValue(_DISPLAY_NAME) DISPLAY_NAME, + @JsonValue(_REQUESTS) REQUESTS, + @JsonValue(_UPDATED) UPDATED, } -/// Extension on [OverseerrUserSortType] to implement extended functionality. extension OverseerrUserSortTypeExtension on OverseerrUserSortType { - OverseerrUserSortType? from(String? type) { - switch (type) { - case 'created': - return OverseerrUserSortType.CREATED; - case 'displayname': - return OverseerrUserSortType.DISPLAY_NAME; - case 'requests': - return OverseerrUserSortType.REQUESTS; - case 'updated': - return OverseerrUserSortType.UPDATED; - default: - return null; - } - } - - String get value { + String get key { switch (this) { case OverseerrUserSortType.CREATED: - return 'created'; + return _CREATED; case OverseerrUserSortType.DISPLAY_NAME: - return 'displayname'; + return _DISPLAY_NAME; case OverseerrUserSortType.REQUESTS: - return 'requests'; + return _REQUESTS; case OverseerrUserSortType.UPDATED: - return 'updated'; + return _UPDATED; } } } diff --git a/lib/modules/overseerr/api/utilities.dart b/lib/modules/overseerr/api/utilities.dart deleted file mode 100644 index 6393e5d6..00000000 --- a/lib/modules/overseerr/api/utilities.dart +++ /dev/null @@ -1,27 +0,0 @@ -import 'types.dart'; - -abstract class OverseerrUtilities { - static OverseerrMediaType? mediaTypeFromJson(String? type) { - return OverseerrMediaType.TV.from(type); - } - - static String? mediaTypeToJson(OverseerrMediaType? type) { - return type?.value; - } - - static OverseerrMediaStatus? mediaStatusFromJson(int? type) { - return OverseerrMediaStatus.UNKNOWN.from(type); - } - - static int? mediaStatusToJson(OverseerrMediaStatus? type) { - return type?.value; - } - - static OverseerrRequestStatus? requestStatusFromJson(int? type) { - return OverseerrRequestStatus.APPROVED.from(type); - } - - static int? requestStatusToJson(OverseerrRequestStatus? type) { - return type?.value; - } -}