mirror of
https://github.com/gabehf/Fladder.git
synced 2026-03-08 23:18:16 -07:00
Init repo
This commit is contained in:
commit
764b6034e3
566 changed files with 212335 additions and 0 deletions
82
lib/models/items/overview_model.dart
Normal file
82
lib/models/items/overview_model.dart
Normal file
|
|
@ -0,0 +1,82 @@
|
|||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
|
||||
import 'package:fladder/jellyfin/jellyfin_open_api.swagger.dart';
|
||||
import 'package:fladder/models/items/chapters_model.dart';
|
||||
import 'package:fladder/models/items/item_shared_models.dart';
|
||||
import 'package:fladder/models/items/trick_play_model.dart';
|
||||
import 'package:fladder/util/duration_extensions.dart';
|
||||
|
||||
import 'package:dart_mappable/dart_mappable.dart';
|
||||
|
||||
part 'overview_model.mapper.dart';
|
||||
|
||||
@MappableClass()
|
||||
class OverviewModel with OverviewModelMappable {
|
||||
final Duration? runTime;
|
||||
final String summary;
|
||||
final int? yearAired;
|
||||
final DateTime? dateAdded;
|
||||
final String? parentalRating;
|
||||
final int? productionYear;
|
||||
final double? criticRating;
|
||||
final double? communityRating;
|
||||
final Map<String, TrickPlayModel>? trickPlayInfo;
|
||||
final List<Chapter>? chapters;
|
||||
final List<ExternalUrls>? externalUrls;
|
||||
final List<Studio> studios;
|
||||
final List<String> genres;
|
||||
final List<GenreItems> genreItems;
|
||||
final List<String> tags;
|
||||
final List<Person> people;
|
||||
const OverviewModel({
|
||||
this.runTime,
|
||||
this.summary = "",
|
||||
this.yearAired,
|
||||
this.dateAdded,
|
||||
this.parentalRating,
|
||||
this.productionYear,
|
||||
this.criticRating,
|
||||
this.communityRating,
|
||||
this.trickPlayInfo,
|
||||
this.chapters,
|
||||
this.externalUrls,
|
||||
this.studios = const [],
|
||||
this.genres = const [],
|
||||
this.genreItems = const [],
|
||||
this.tags = const [],
|
||||
this.people = const [],
|
||||
});
|
||||
|
||||
List<Person> get directors {
|
||||
return people.where((element) => element.type == PersonKind.director).toList();
|
||||
}
|
||||
|
||||
List<Person> get writers {
|
||||
return people.where((element) => element.type == PersonKind.writer).toList();
|
||||
}
|
||||
|
||||
factory OverviewModel.fromBaseItemDto(BaseItemDto item, Ref ref) {
|
||||
final trickPlayItem = item.trickplay;
|
||||
return OverviewModel(
|
||||
runTime: item.runTimeDuration,
|
||||
yearAired: item.productionYear,
|
||||
parentalRating: item.officialRating,
|
||||
summary: item.overview ?? "",
|
||||
genres: item.genres ?? [],
|
||||
criticRating: item.criticRating,
|
||||
communityRating: item.communityRating,
|
||||
tags: item.tags ?? [],
|
||||
dateAdded: item.dateCreated,
|
||||
trickPlayInfo:
|
||||
trickPlayItem != null && trickPlayItem.isNotEmpty ? TrickPlayModel.toTrickPlayMap(trickPlayItem) : null,
|
||||
chapters: item.id != null ? Chapter.chaptersFromInfo(item.id ?? "", item.chapters ?? [], ref) : null,
|
||||
studios: item.studios?.map((e) => Studio(id: e.id ?? "", name: e.name ?? "")).toList() ?? [],
|
||||
genreItems: item.genreItems?.map((e) => GenreItems(id: e.id ?? "", name: e.name ?? "")).toList() ?? [],
|
||||
externalUrls: ExternalUrls.fromDto(item.externalUrls ?? []),
|
||||
people: Person.peopleFromDto(item.people ?? [], ref),
|
||||
);
|
||||
}
|
||||
|
||||
factory OverviewModel.fromMap(Map<String, dynamic> map) => OverviewModelMapper.fromMap(map);
|
||||
factory OverviewModel.fromJson(String json) => OverviewModelMapper.fromJson(json);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue