diff --git a/Sources/justMUSIC/lib/view_model/MusicViewModel.dart b/Sources/justMUSIC/lib/view_model/MusicViewModel.dart index 5d9570d..d8cc9da 100644 --- a/Sources/justMUSIC/lib/view_model/MusicViewModel.dart +++ b/Sources/justMUSIC/lib/view_model/MusicViewModel.dart @@ -27,41 +27,27 @@ class MusicViewModel { return Artist(artist['id'], artist['name'], ''); })); - return Music( - responseData['id'], - responseData['name'], - responseData['album']['images'][0]['url'], - responseData['preview_url'], - int.parse(responseData['album']['release_date'].split('-')[0]), - responseData['duration_ms'] / 1000, - responseData['explicit'], - artists); + return _getMusicFromResponse(responseData); } else { throw Exception( 'Error retrieving music information : ${response.statusCode} ${response.reasonPhrase}'); } } - List _getMusicsFromResponse(List tracks) { - List musics = []; - - for (var track in tracks) { - List artists = List.from(track['artists'].map((artist) { - return Artist(artist['id'], artist['name'], ''); - })); - - musics.add(Music( - track['id'], - track['name'], - track['album']['images'][0]['url'], - track['preview_url'], - int.parse(track['album']['release_date'].split('-')[0]), - track['duration_ms'] / 1000, - track['explicit'], - artists)); - } - - return musics; + Music _getMusicFromResponse(dynamic track) { + List artists = List.from(track['artists'].map((artist) { + return Artist(artist['id'], artist['name'], ''); + })); + + return Music( + track['id'], + track['name'], + track['album']['images'][0]['url'], + track['preview_url'], + int.parse(track['album']['release_date'].split('-')[0]), + track['duration_ms'] / 1000, + track['explicit'], + artists); } Future> getMusicsWithName(String name, @@ -76,7 +62,9 @@ class MusicViewModel { if (response.statusCode == 200) { Map responseData = jsonDecode(response.body); - return _getMusicsFromResponse(responseData['tracks']['items']); + return List.from(responseData['tracks']['items'].map((track) { + return _getMusicFromResponse(track); + })); } else { throw Exception( 'Error while retrieving music : ${response.statusCode} ${response.reasonPhrase}'); @@ -95,7 +83,9 @@ class MusicViewModel { if (response.statusCode == 200) { Map responseData = jsonDecode(response.body); - return _getMusicsFromResponse(responseData['tracks']['items']); + return List.from(responseData['tracks']['items'].map((track) { + return _getMusicFromResponse(track); + })); } else { throw Exception( 'Error while retrieving music : ${response.statusCode} ${response.reasonPhrase}'); @@ -174,7 +164,9 @@ class MusicViewModel { if (response.statusCode == 200) { Map responseData = jsonDecode(response.body); - return _getMusicsFromResponse(responseData['tracks']); + return List.from(responseData['tracks'].map((track) { + return _getMusicFromResponse(track); + })); } else { throw Exception( 'Error while retrieving music : ${response.statusCode} ${response.reasonPhrase}'); @@ -196,20 +188,7 @@ class MusicViewModel { List tracks = responseData['tracks']['items']; for (var track in tracks) { - List artists = - List.from(track['track']['artists'].map((artist) { - return Artist(artist['id'], artist['name'], ''); - })); - - musics.add(Music( - track['track']['id'], - track['track']['name'], - track['track']['album']['images'][0]['url'], - track['track']['preview_url'], - int.parse(track['track']['album']['release_date'].split('-')[0]), - track['track']['duration_ms'] / 1000, - track['track']['explicit'], - artists)); + musics.add(_getMusicFromResponse(track['track'])); } return musics; @@ -228,15 +207,15 @@ class MusicViewModel { url += ids.join('%2C'); - print(url); - var response = await http.get(Uri.parse(url), headers: { 'Authorization': 'Bearer $accessToken', }); if (response.statusCode == 200) { Map responseData = jsonDecode(response.body); - return _getMusicsFromResponse(responseData['tracks']); + return List.from(responseData['tracks'].map((track) { + return _getMusicFromResponse(track); + })); } else { throw Exception( 'Error while retrieving music : ${response.statusCode} ${response.reasonPhrase}');