From 8e5fec03a4f206dddb3eb8dee4063fa0402e1676 Mon Sep 17 00:00:00 2001 From: Emre Date: Wed, 2 Aug 2023 15:03:53 +0200 Subject: [PATCH] add function getMusicsWithNameOrArtistName --- Sources/justMUSIC/lib/model/Artist.dart | 2 +- .../lib/screens/search_song_screen.dart | 2 +- .../lib/view_model/MusicViewModel.dart | 17 +++++++++++++---- Sources/justMUSIC/test/Music_test.dart | 11 +++++++++++ 4 files changed, 26 insertions(+), 6 deletions(-) diff --git a/Sources/justMUSIC/lib/model/Artist.dart b/Sources/justMUSIC/lib/model/Artist.dart index 847ab48..63856c5 100644 --- a/Sources/justMUSIC/lib/model/Artist.dart +++ b/Sources/justMUSIC/lib/model/Artist.dart @@ -5,7 +5,7 @@ class Artist { Artist(this._id, this._name, this._image); - String? get id => _id; + String get id => _id; String? get name => _name; diff --git a/Sources/justMUSIC/lib/screens/search_song_screen.dart b/Sources/justMUSIC/lib/screens/search_song_screen.dart index 0ad1be3..9e20070 100644 --- a/Sources/justMUSIC/lib/screens/search_song_screen.dart +++ b/Sources/justMUSIC/lib/screens/search_song_screen.dart @@ -123,7 +123,7 @@ class _SearchSongScreenState extends State { } else if (value == " ") { print("popular"); } else { - filteredData = await MyApp.musicViewModel.getMusicsWithName(value); + filteredData = await MyApp.musicViewModel.getMusicsWithNameOrArtistName(value); setState(() { filteredData = filteredData; }); diff --git a/Sources/justMUSIC/lib/view_model/MusicViewModel.dart b/Sources/justMUSIC/lib/view_model/MusicViewModel.dart index d8cc9da..981b08a 100644 --- a/Sources/justMUSIC/lib/view_model/MusicViewModel.dart +++ b/Sources/justMUSIC/lib/view_model/MusicViewModel.dart @@ -22,10 +22,6 @@ class MusicViewModel { if (response.statusCode == 200) { final responseData = jsonDecode(response.body); - List artists = - List.from(responseData['artists'].map((artist) { - return Artist(artist['id'], artist['name'], ''); - })); return _getMusicFromResponse(responseData); } else { @@ -221,4 +217,17 @@ class MusicViewModel { 'Error while retrieving music : ${response.statusCode} ${response.reasonPhrase}'); } } + + Future> getMusicsWithNameOrArtistName(String name, + {int limit = 20, int offset = 0, String market = "FR"}) async { + try { + List musics = []; + Artist artist = await getArtistWithName(name, market: market); + musics.addAll(await getTopMusicsWithArtistId(artist.id)); + musics.addAll(await getMusicsWithName(name,limit: limit,offset: offset,market: market)); + return musics; + } catch (e) { + return await getMusicsWithName(name,limit: limit,offset: offset,market: market); + } + } } diff --git a/Sources/justMUSIC/test/Music_test.dart b/Sources/justMUSIC/test/Music_test.dart index 482f4ff..1d3d8f4 100644 --- a/Sources/justMUSIC/test/Music_test.dart +++ b/Sources/justMUSIC/test/Music_test.dart @@ -79,5 +79,16 @@ Future main() async { } } + print('\nMusics With Name or Artist Name :'); + + List musicsArtistOrName = await musicVM.getMusicsWithNameOrArtistName('la bandite'); + for (Music m in musicsArtistOrName) { + print("id : ${m.id.toString()}, cover : ${m.cover}, title : ${m.title}"); + print("date : ${m.date.toString()}, preview : ${m.previewUrl}, duration : ${m.duration}, explicit : ${m.explicit}"); + for (Artist a in m.artists) { + print("id : ${a.id}, name : ${a.name}"); + } + } + }