v1.3.3+59
All checks were successful
Flutter Schmutter / build (push) Successful in 3m47s

This commit is contained in:
2025-06-17 19:03:40 +02:00
parent 089fe1f8df
commit ee2db04a36
19 changed files with 667 additions and 136 deletions

View File

@ -6,6 +6,7 @@ class MediaItem {
final String dest;
final int mode;
final List<Tag> tags;
final List<Favorite>? favorites;
MediaItem({
required this.id,
@ -15,8 +16,31 @@ class MediaItem {
required this.dest,
required this.mode,
required this.tags,
required this.favorites,
});
MediaItem copyWith({
int? id,
String? mime,
int? size,
int? stamp,
String? dest,
int? mode,
List<Tag>? tags,
List<Favorite>? favorites,
}) {
return MediaItem(
id: id ?? this.id,
mime: mime ?? this.mime,
size: size ?? this.size,
stamp: stamp ?? this.stamp,
dest: dest ?? this.dest,
mode: mode ?? this.mode,
tags: tags ?? this.tags,
favorites: favorites ?? this.favorites,
);
}
factory MediaItem.fromJson(Map<String, dynamic> json) {
List<Tag> parsedTags = [];
if (json['tags'] is List) {
@ -27,6 +51,18 @@ class MediaItem {
parsedTags = [];
}
List<Favorite> parsedFavorites = [];
if (json['favorites'] is List) {
parsedFavorites = (json['favorites'] as List<dynamic>)
.map(
(favoritesJson) =>
Favorite.fromJson(favoritesJson as Map<String, dynamic>),
)
.toList();
} else {
parsedFavorites = [];
}
return MediaItem(
id: json['id'],
mime: json['mime'],
@ -35,6 +71,7 @@ class MediaItem {
dest: json['dest'],
mode: json['mode'],
tags: parsedTags,
favorites: parsedFavorites,
);
}
@ -59,3 +96,21 @@ class Tag {
);
}
}
class Favorite {
final int userId;
final String user;
final int avatar;
Favorite({required this.userId, required this.user, required this.avatar});
factory Favorite.fromJson(Map<String, dynamic> json) {
return Favorite(
userId: json['user_id'],
user: json['user'],
avatar: json['avatar'],
);
}
String get avatarUrl => 'https://f0ck.me/t/$avatar.webp';
}