Search in sources :

Example 1 with TracksPager

use of kaaes.spotify.webapi.android.models.TracksPager in project SpotiQ by ZinoKader.

the class SongSearchPresenter method searchTracks.

void searchTracks(String query) {
    Map<String, Object> searchOptions = new HashMap<>();
    searchOptions.put(SpotifyService.LIMIT, SpotifyConstants.TRACK_SEARCH_QUERY_RESPONSE_LIMIT);
    searchOptions.put(SpotifyService.OFFSET, 0);
    partiesRepository.getParty(partyTitle).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(partySnapshot -> {
        Party dbParty = partySnapshot.child(FirebaseConstants.CHILD_PARTYINFO).getValue(Party.class);
        searchOptions.put(SpotifyService.MARKET, dbParty.getHostMarket());
        searchTracksRecursively(query, searchOptions).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).map(tracksPager -> TrackMapper.tracksToSongs(tracksPager.tracks.items, user)).subscribe(songs -> {
            if (getView() != null) {
                if (songs.isEmpty())
                    getView().showMessage("No songs were found for the search query " + query);
                getView().updateSearch(songs);
            }
        }, throwable -> {
            Log.d(LogTag.LOG_SEARCH, "Something went wrong on searching for tracks");
            throwable.printStackTrace();
        });
    });
}
Also used : PartiesRepository(se.zinokader.spotiq.repository.PartiesRepository) Bundle(android.os.Bundle) HashMap(java.util.HashMap) AndroidSchedulers(io.reactivex.android.schedulers.AndroidSchedulers) TrackMapper(se.zinokader.spotiq.util.mapper.TrackMapper) SpotifyService(kaaes.spotify.webapi.android.SpotifyService) Inject(javax.inject.Inject) SpotifyRepository(se.zinokader.spotiq.repository.SpotifyRepository) Map(java.util.Map) PreviewPlayer(se.zinokader.spotiq.feature.search.preview.PreviewPlayer) FirebaseConstants(se.zinokader.spotiq.constant.FirebaseConstants) Observable(io.reactivex.Observable) Schedulers(io.reactivex.schedulers.Schedulers) Log(android.util.Log) SpotifyConstants(se.zinokader.spotiq.constant.SpotifyConstants) LogTag(se.zinokader.spotiq.constant.LogTag) BasePresenter(se.zinokader.spotiq.feature.base.BasePresenter) Party(se.zinokader.spotiq.model.Party) SpotifyAuthenticationService(se.zinokader.spotiq.service.authentication.SpotifyAuthenticationService) TimeUnit(java.util.concurrent.TimeUnit) ApplicationConstants(se.zinokader.spotiq.constant.ApplicationConstants) List(java.util.List) TracksPager(kaaes.spotify.webapi.android.models.TracksPager) Song(se.zinokader.spotiq.model.Song) User(se.zinokader.spotiq.model.User) Party(se.zinokader.spotiq.model.Party) HashMap(java.util.HashMap)

Aggregations

Bundle (android.os.Bundle)1 Log (android.util.Log)1 Observable (io.reactivex.Observable)1 AndroidSchedulers (io.reactivex.android.schedulers.AndroidSchedulers)1 Schedulers (io.reactivex.schedulers.Schedulers)1 HashMap (java.util.HashMap)1 List (java.util.List)1 Map (java.util.Map)1 TimeUnit (java.util.concurrent.TimeUnit)1 Inject (javax.inject.Inject)1 SpotifyService (kaaes.spotify.webapi.android.SpotifyService)1 TracksPager (kaaes.spotify.webapi.android.models.TracksPager)1 ApplicationConstants (se.zinokader.spotiq.constant.ApplicationConstants)1 FirebaseConstants (se.zinokader.spotiq.constant.FirebaseConstants)1 LogTag (se.zinokader.spotiq.constant.LogTag)1 SpotifyConstants (se.zinokader.spotiq.constant.SpotifyConstants)1 BasePresenter (se.zinokader.spotiq.feature.base.BasePresenter)1 PreviewPlayer (se.zinokader.spotiq.feature.search.preview.PreviewPlayer)1 Party (se.zinokader.spotiq.model.Party)1 Song (se.zinokader.spotiq.model.Song)1