Query API for artists when searching.

This commit is contained in:
Benoît Dardenne 2020-06-27 14:50:18 +02:00
commit aca0ea697a
5 changed files with 29 additions and 18 deletions

View file

@ -41,7 +41,7 @@ android {
} }
dependencies { 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 'com.google.android.exoplayer:exoplayer:2.11.4'
implementation 'androidx.core:core:1.3.0' implementation 'androidx.core:core:1.3.0'

View file

@ -24,10 +24,11 @@ import com.dkanada.gramophone.ui.activities.base.AbsMusicServiceActivity;
import com.dkanada.gramophone.util.QueryUtil; import com.dkanada.gramophone.util.QueryUtil;
import com.dkanada.gramophone.util.Util; import com.dkanada.gramophone.util.Util;
import org.jellyfin.apiclient.model.querying.ArtistsQuery;
import org.jellyfin.apiclient.model.querying.ItemQuery; import org.jellyfin.apiclient.model.querying.ItemQuery;
import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.Comparator;
import java.util.List; import java.util.List;
import butterknife.BindView; import butterknife.BindView;
@ -144,11 +145,18 @@ public class SearchActivity extends AbsMusicServiceActivity implements SearchVie
this.query = query; this.query = query;
ItemQuery itemQuery = new ItemQuery(); ItemQuery itemQuery = new ItemQuery();
itemQuery.setSearchTerm(query); itemQuery.setSearchTerm(query);
QueryUtil.getItems(itemQuery, new MediaCallback() {
ArtistsQuery artistsQuery = new ArtistsQuery();
artistsQuery.setSearchTerm(query);
MediaCallback callback = new MediaCallback() {
private final List<Object> data = new ArrayList<>();
@Override @Override
public void onLoadMedia(List<?> media) { public void onLoadMedia(List<?> media) {
Collections.sort(media, new Comparator<Object>() { data.addAll(media);
public int compare(Object one, Object two) {
Collections.sort(data, (one, two) -> {
if (one.getClass() == Album.class || one.getClass() == Artist.class) { if (one.getClass() == Album.class || one.getClass() == Artist.class) {
if (two.getClass() == Song.class) return -1; if (two.getClass() == Song.class) return -1;
} }
@ -158,12 +166,14 @@ public class SearchActivity extends AbsMusicServiceActivity implements SearchVie
} }
return 0; return 0;
}
}); });
adapter.swapDataSet((List<Object>) media); adapter.swapDataSet(data);
} }
}); };
QueryUtil.getArtists(artistsQuery, callback);
QueryUtil.getItems(itemQuery, callback);
} }
@Override @Override

View file

@ -14,6 +14,8 @@ import com.dkanada.gramophone.model.Artist;
import com.dkanada.gramophone.util.PreferenceUtil; import com.dkanada.gramophone.util.PreferenceUtil;
import com.dkanada.gramophone.util.QueryUtil; import com.dkanada.gramophone.util.QueryUtil;
import org.jellyfin.apiclient.model.querying.ArtistsQuery;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
@ -38,7 +40,7 @@ public class ArtistsFragment extends AbsLibraryPagerRecyclerViewCustomGridSizeFr
List<Artist> dataSet = getAdapter() == null ? new ArrayList<>() : getAdapter().getDataSet(); List<Artist> dataSet = getAdapter() == null ? new ArrayList<>() : getAdapter().getDataSet();
ArtistAdapter adapter = new ArtistAdapter(getLibraryFragment().getMainActivity(), dataSet, itemLayoutRes, loadUsePalette(), getLibraryFragment()); ArtistAdapter adapter = new ArtistAdapter(getLibraryFragment().getMainActivity(), dataSet, itemLayoutRes, loadUsePalette(), getLibraryFragment());
QueryUtil.getArtists(new MediaCallback() { QueryUtil.getArtists(new ArtistsQuery(), new MediaCallback() {
@Override @Override
public void onLoadMedia(List<?> media) { public void onLoadMedia(List<?> media) {
dataSet.addAll((Collection<Artist>) media); dataSet.addAll((Collection<Artist>) media);

View file

@ -63,7 +63,7 @@ public class MusicUtil {
@NonNull @NonNull
public static String getArtistInfoString(@NonNull final Context context, @NonNull final Artist artist) { 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 @NonNull

View file

@ -139,8 +139,7 @@ public class QueryUtil {
}); });
} }
public static void getArtists(MediaCallback callback) { public static void getArtists(ArtistsQuery query, MediaCallback callback) {
ArtistsQuery query = new ArtistsQuery();
query.setFields(new ItemFields[]{ItemFields.Genres}); query.setFields(new ItemFields[]{ItemFields.Genres});
applyProperties(query); applyProperties(query);
App.getApiClient().GetAlbumArtistsAsync(query, new Response<ItemsResult>() { App.getApiClient().GetAlbumArtistsAsync(query, new Response<ItemsResult>() {