refactor(overseerr): utilize JsonEnum generators in enum types [skip ci]

This commit is contained in:
Jagandeep Brar
2022-02-21 01:23:27 -05:00
parent db4dfdaf9c
commit 76d530ed08
11 changed files with 102 additions and 176 deletions

View File

@@ -1,4 +1,3 @@
export 'api/overseerr.dart';
export 'api/models.dart';
export 'api/types.dart';
export 'api/utilities.dart';

View File

@@ -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(

View File

@@ -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(

View File

@@ -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')

View File

@@ -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;
}
}
}

View File

@@ -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;
}
}
}

View File

@@ -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;
}
}
}

View File

@@ -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;
}
}
}

View File

@@ -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;
}
}
}

View File

@@ -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;
}
}
}

View File

@@ -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;
}
}