Query API for artists when searching.
This commit is contained in:
parent
692ccda94c
commit
aca0ea697a
5 changed files with 29 additions and 18 deletions
|
|
@ -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<Object> data = new ArrayList<>();
|
||||
|
||||
@Override
|
||||
public void onLoadMedia(List<?> media) {
|
||||
Collections.sort(media, new Comparator<Object>() {
|
||||
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<Object>) media);
|
||||
adapter.swapDataSet(data);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
QueryUtil.getArtists(artistsQuery, callback);
|
||||
QueryUtil.getItems(itemQuery, callback);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -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<Artist> 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<Artist>) media);
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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<ItemsResult>() {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue