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
97
lib/models/view_model.dart
Normal file
97
lib/models/view_model.dart
Normal file
|
|
@ -0,0 +1,97 @@
|
|||
// ignore_for_file: public_member_api_docs, sort_constructors_first
|
||||
|
||||
import 'package:collection/collection.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
|
||||
import 'package:fladder/jellyfin/jellyfin_open_api.enums.swagger.dart';
|
||||
import 'package:fladder/jellyfin/jellyfin_open_api.swagger.dart' as dto;
|
||||
import 'package:fladder/models/item_base_model.dart';
|
||||
|
||||
class ViewModel {
|
||||
final String name;
|
||||
final String id;
|
||||
final String serverId;
|
||||
final DateTime dateCreated;
|
||||
final bool canDelete;
|
||||
final bool canDownload;
|
||||
final String parentId;
|
||||
final CollectionType collectionType;
|
||||
final dto.PlayAccess playAccess;
|
||||
final List<ItemBaseModel> recentlyAdded;
|
||||
final int childCount;
|
||||
ViewModel({
|
||||
required this.name,
|
||||
required this.id,
|
||||
required this.serverId,
|
||||
required this.dateCreated,
|
||||
required this.canDelete,
|
||||
required this.canDownload,
|
||||
required this.parentId,
|
||||
required this.collectionType,
|
||||
required this.playAccess,
|
||||
required this.recentlyAdded,
|
||||
required this.childCount,
|
||||
});
|
||||
|
||||
ViewModel copyWith({
|
||||
String? name,
|
||||
String? id,
|
||||
String? serverId,
|
||||
DateTime? dateCreated,
|
||||
bool? canDelete,
|
||||
bool? canDownload,
|
||||
String? parentId,
|
||||
CollectionType? collectionType,
|
||||
dto.PlayAccess? playAccess,
|
||||
List<ItemBaseModel>? recentlyAdded,
|
||||
int? childCount,
|
||||
}) {
|
||||
return ViewModel(
|
||||
name: name ?? this.name,
|
||||
id: id ?? this.id,
|
||||
serverId: serverId ?? this.serverId,
|
||||
dateCreated: dateCreated ?? this.dateCreated,
|
||||
canDelete: canDelete ?? this.canDelete,
|
||||
canDownload: canDownload ?? this.canDownload,
|
||||
parentId: parentId ?? this.parentId,
|
||||
collectionType: collectionType ?? this.collectionType,
|
||||
playAccess: playAccess ?? this.playAccess,
|
||||
recentlyAdded: recentlyAdded ?? this.recentlyAdded,
|
||||
childCount: childCount ?? this.childCount,
|
||||
);
|
||||
}
|
||||
|
||||
factory ViewModel.fromBodyDto(dto.BaseItemDto item, Ref ref) {
|
||||
return ViewModel(
|
||||
name: item.name ?? "",
|
||||
id: item.id ?? "",
|
||||
serverId: item.serverId ?? "",
|
||||
dateCreated: item.dateCreated ?? DateTime.now(),
|
||||
canDelete: item.canDelete ?? false,
|
||||
canDownload: item.canDownload ?? false,
|
||||
parentId: item.parentId ?? "",
|
||||
recentlyAdded: [],
|
||||
collectionType: CollectionType.values
|
||||
.firstWhereOrNull((element) => element.name.toLowerCase() == item.collectionType?.value?.toLowerCase()) ??
|
||||
CollectionType.movies,
|
||||
playAccess: item.playAccess ?? PlayAccess.none,
|
||||
childCount: item.childCount ?? 0,
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
bool operator ==(covariant ViewModel other) {
|
||||
if (identical(this, other)) return true;
|
||||
return other.id == id && other.serverId == serverId;
|
||||
}
|
||||
|
||||
@override
|
||||
int get hashCode {
|
||||
return id.hashCode ^ serverId.hashCode;
|
||||
}
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return 'ViewModel(name: $name, id: $id, serverId: $serverId, dateCreated: $dateCreated, canDelete: $canDelete, canDownload: $canDownload, parentId: $parentId, collectionType: $collectionType, playAccess: $playAccess, recentlyAdded: $recentlyAdded, childCount: $childCount)';
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue