part of 'connect.dart'; List> _tracksJson(List tracks) { return tracks.map((e) => e.toJson()).toList(); } @freezed class WebSocketLoadEventData with _$WebSocketLoadEventData { const WebSocketLoadEventData._(); factory WebSocketLoadEventData.playlist({ @JsonKey(name: 'tracks', toJson: _tracksJson) required List tracks, PlaylistSimple? collection, int? initialIndex, }) = WebSocketLoadEventDataPlaylist; factory WebSocketLoadEventData.album({ @JsonKey(name: 'tracks', toJson: _tracksJson) required List tracks, AlbumSimple? collection, int? initialIndex, }) = WebSocketLoadEventDataAlbum; factory WebSocketLoadEventData.fromJson(Map json) => _$WebSocketLoadEventDataFromJson(json); String? get collectionId => when( playlist: (tracks, collection, _) => collection?.id, album: (tracks, collection, _) => collection?.id, ); } class WebSocketLoadEvent extends WebSocketEvent { WebSocketLoadEvent(WebSocketLoadEventData data) : super(WsEvent.load, data); factory WebSocketLoadEvent.fromJson(Map json) { return WebSocketLoadEvent( WebSocketLoadEventData.fromJson(json['data'] as Map), ); } }