diff --git a/app/build.gradle b/app/build.gradle index e1e63d3e..db4567ba 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -41,7 +41,7 @@ android { } dependencies { - implementation 'com.github.jellyfin.jellyfin-apiclient-java:android:0.6.1' + implementation 'com.github.jellyfin.jellyfin-apiclient-java:android:0.6.3' implementation 'com.google.android.exoplayer:exoplayer:2.11.4' implementation 'androidx.core:core:1.3.0' diff --git a/app/src/main/java/com/dkanada/gramophone/ui/activities/SearchActivity.java b/app/src/main/java/com/dkanada/gramophone/ui/activities/SearchActivity.java index 4f7740e3..b8708c2e 100644 --- a/app/src/main/java/com/dkanada/gramophone/ui/activities/SearchActivity.java +++ b/app/src/main/java/com/dkanada/gramophone/ui/activities/SearchActivity.java @@ -24,10 +24,11 @@ import com.dkanada.gramophone.ui.activities.base.AbsMusicServiceActivity; import com.dkanada.gramophone.util.QueryUtil; import com.dkanada.gramophone.util.Util; +import org.jellyfin.apiclient.model.querying.ArtistsQuery; import org.jellyfin.apiclient.model.querying.ItemQuery; +import java.util.ArrayList; import java.util.Collections; -import java.util.Comparator; import java.util.List; import butterknife.BindView; @@ -144,26 +145,35 @@ public class SearchActivity extends AbsMusicServiceActivity implements SearchVie this.query = query; ItemQuery itemQuery = new ItemQuery(); itemQuery.setSearchTerm(query); - QueryUtil.getItems(itemQuery, new MediaCallback() { + + ArtistsQuery artistsQuery = new ArtistsQuery(); + artistsQuery.setSearchTerm(query); + + MediaCallback callback = new MediaCallback() { + private final List data = new ArrayList<>(); + @Override public void onLoadMedia(List media) { - Collections.sort(media, new Comparator() { - public int compare(Object one, Object two) { - if (one.getClass() == Album.class || one.getClass() == Artist.class) { - if (two.getClass() == Song.class) return -1; - } + data.addAll(media); - if (two.getClass() == Album.class || two.getClass() == Artist.class) { - if (one.getClass() == Song.class) return 1; - } - - return 0; + Collections.sort(data, (one, two) -> { + if (one.getClass() == Album.class || one.getClass() == Artist.class) { + if (two.getClass() == Song.class) return -1; } + + if (two.getClass() == Album.class || two.getClass() == Artist.class) { + if (one.getClass() == Song.class) return 1; + } + + return 0; }); - adapter.swapDataSet((List) media); + adapter.swapDataSet(data); } - }); + }; + + QueryUtil.getArtists(artistsQuery, callback); + QueryUtil.getItems(itemQuery, callback); } @Override diff --git a/app/src/main/java/com/dkanada/gramophone/ui/fragments/mainactivity/library/pager/ArtistsFragment.java b/app/src/main/java/com/dkanada/gramophone/ui/fragments/mainactivity/library/pager/ArtistsFragment.java index 4018147a..c480c80a 100644 --- a/app/src/main/java/com/dkanada/gramophone/ui/fragments/mainactivity/library/pager/ArtistsFragment.java +++ b/app/src/main/java/com/dkanada/gramophone/ui/fragments/mainactivity/library/pager/ArtistsFragment.java @@ -14,6 +14,8 @@ import com.dkanada.gramophone.model.Artist; import com.dkanada.gramophone.util.PreferenceUtil; import com.dkanada.gramophone.util.QueryUtil; +import org.jellyfin.apiclient.model.querying.ArtistsQuery; + import java.util.ArrayList; import java.util.Collection; import java.util.List; @@ -38,7 +40,7 @@ public class ArtistsFragment extends AbsLibraryPagerRecyclerViewCustomGridSizeFr List dataSet = getAdapter() == null ? new ArrayList<>() : getAdapter().getDataSet(); ArtistAdapter adapter = new ArtistAdapter(getLibraryFragment().getMainActivity(), dataSet, itemLayoutRes, loadUsePalette(), getLibraryFragment()); - QueryUtil.getArtists(new MediaCallback() { + QueryUtil.getArtists(new ArtistsQuery(), new MediaCallback() { @Override public void onLoadMedia(List media) { dataSet.addAll((Collection) media); diff --git a/app/src/main/java/com/dkanada/gramophone/util/MusicUtil.java b/app/src/main/java/com/dkanada/gramophone/util/MusicUtil.java index 4c144f8b..0c62c8b0 100644 --- a/app/src/main/java/com/dkanada/gramophone/util/MusicUtil.java +++ b/app/src/main/java/com/dkanada/gramophone/util/MusicUtil.java @@ -63,7 +63,7 @@ public class MusicUtil { @NonNull public static String getArtistInfoString(@NonNull final Context context, @NonNull final Artist artist) { - return artist.genres.size() != 0 ? artist.genres.get(0).name : artist.id; + return artist.genres.size() != 0 ? artist.genres.get(0).name : ""; } @NonNull diff --git a/app/src/main/java/com/dkanada/gramophone/util/QueryUtil.java b/app/src/main/java/com/dkanada/gramophone/util/QueryUtil.java index 27e776df..86090ef7 100644 --- a/app/src/main/java/com/dkanada/gramophone/util/QueryUtil.java +++ b/app/src/main/java/com/dkanada/gramophone/util/QueryUtil.java @@ -139,8 +139,7 @@ public class QueryUtil { }); } - public static void getArtists(MediaCallback callback) { - ArtistsQuery query = new ArtistsQuery(); + public static void getArtists(ArtistsQuery query, MediaCallback callback) { query.setFields(new ItemFields[]{ItemFields.Genres}); applyProperties(query); App.getApiClient().GetAlbumArtistsAsync(query, new Response() {