part of 'connect.dart'; @freezed class WebSocketLoadEventData with _$WebSocketLoadEventData { const WebSocketLoadEventData._(); factory WebSocketLoadEventData.playlist({ @Assert( "tracks is List", "tracks must be a list of SpotubeFullTrackObject", ) required List tracks, SpotubeSimplePlaylistObject? collection, int? initialIndex, }) = WebSocketLoadEventDataPlaylist; factory WebSocketLoadEventData.album({ @Assert( "tracks is List", "tracks must be a list of SpotubeFullTrackObject", ) required List tracks, SpotubeSimpleAlbumObject? 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), ); } }