|
| 1 | +import 'package:json_annotation/json_annotation.dart'; |
| 2 | +import 'package:stream_feed/src/core/models/activity.dart'; |
| 3 | +import 'package:stream_feed/src/core/models/collection_entry.dart'; |
| 4 | +import 'package:stream_feed/src/core/models/enriched_activity.dart'; |
| 5 | +import 'package:stream_feed/src/core/models/paginated.dart'; |
| 6 | +import 'package:stream_feed/src/core/models/reaction.dart'; |
| 7 | +import 'package:stream_feed/src/core/models/user.dart'; |
| 8 | + |
| 9 | +part 'paginated_activities.g.dart'; |
| 10 | + |
| 11 | +/// Paginated activities feed |
| 12 | +@JsonSerializable(createToJson: true, genericArgumentFactories: true) |
| 13 | +class PaginatedActivities<A, Ob, T, Or> |
| 14 | + extends Paginated<GenericEnrichedActivity<A, Ob, T, Or>> { |
| 15 | + /// Builds a [PaginatedActivities]. |
| 16 | + const PaginatedActivities({ |
| 17 | + String? next, |
| 18 | + List<GenericEnrichedActivity<A, Ob, T, Or>>? results, |
| 19 | + String? duration, |
| 20 | + }) : super(next, results, duration); |
| 21 | + |
| 22 | + /// Deserialize json to [PaginatedReactions] |
| 23 | + factory PaginatedActivities.fromJson( |
| 24 | + Map<String, dynamic> json, [ |
| 25 | + A Function(Object? json)? fromJsonA, |
| 26 | + Ob Function(Object? json)? fromJsonOb, |
| 27 | + T Function(Object? json)? fromJsonT, |
| 28 | + Or Function(Object? json)? fromJsonOr, |
| 29 | + ]) => |
| 30 | + _$PaginatedActivitiesFromJson<A, Ob, T, Or>( |
| 31 | + json, |
| 32 | + fromJsonA ?? |
| 33 | + (jsonA) => (A == User) |
| 34 | + ? User.fromJson(jsonA! as Map<String, dynamic>) as A |
| 35 | + : jsonA as A, |
| 36 | + fromJsonOb ?? |
| 37 | + (jsonOb) => (Ob == CollectionEntry) |
| 38 | + ? CollectionEntry.fromJson(jsonOb! as Map<String, dynamic>) |
| 39 | + as Ob |
| 40 | + : jsonOb as Ob, |
| 41 | + fromJsonT ?? |
| 42 | + (jsonT) => (T == Activity) |
| 43 | + ? Activity.fromJson(jsonT! as Map<String, dynamic>) as T |
| 44 | + : jsonT as T, |
| 45 | + fromJsonOr ?? |
| 46 | + (jsonOr) { |
| 47 | + if (Or == User) { |
| 48 | + return User.fromJson(jsonOr! as Map<String, dynamic>) as Or; |
| 49 | + } else if (Or == Reaction) { |
| 50 | + return Reaction.fromJson(jsonOr! as Map<String, dynamic>) as Or; |
| 51 | + } else { |
| 52 | + return jsonOr as Or; |
| 53 | + } |
| 54 | + }, |
| 55 | + ); |
| 56 | + |
| 57 | + @override |
| 58 | + List<Object?> get props => [...super.props]; |
| 59 | + |
| 60 | + /// Serialize to json |
| 61 | + Map<String, dynamic> toJson( |
| 62 | + Object? Function(A value) toJsonA, |
| 63 | + Object? Function(Ob value) toJsonOb, |
| 64 | + Object? Function(T value) toJsonT, |
| 65 | + Object? Function(Or value) toJsonOr, |
| 66 | + ) => |
| 67 | + _$PaginatedActivitiesToJson(this, toJsonA, toJsonOb, toJsonT, toJsonOr); |
| 68 | +} |
0 commit comments