Search in sources :

Example 1 with PlaylistSimple

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

the class PlaylistSearchRecyclerAdapter method onBindViewHolder.

@Override
public void onBindViewHolder(PlaylistHolder playlistHolder, int i) {
    PlaylistSimple playlist = playlists.get(i);
    User playlistCreator = new User(playlist.owner.id, playlist.owner.display_name, playlist.owner.images);
    Context context = playlistHolder.itemView.getContext();
    playlistHolder.itemView.setOnClickListener(view -> onClickSubject.onNext(playlist));
    String playlistImageUrl = playlist.images.isEmpty() ? ApplicationConstants.PLAYLIST_IMAGE_PLACEHOLDER_URL : playlist.images.get(0).url;
    Glide.with(context).load(playlistImageUrl).diskCacheStrategy(DiskCacheStrategy.SOURCE).placeholder(R.drawable.image_playlist_placeholder).fitCenter().into(playlistHolder.playlistArt);
    playlistHolder.playlistName.setText(playlist.name);
    playlistHolder.playlistCreatorName.setText(playlistCreator.getUserName());
    playlistHolder.songCount.setText(context.getResources().getQuantityString(R.plurals.playlist_tracks_amount_label, playlist.tracks.total, playlist.tracks.total));
}
Also used : Context(android.content.Context) User(se.zinokader.spotiq.model.User) PlaylistSimple(kaaes.spotify.webapi.android.models.PlaylistSimple)

Example 2 with PlaylistSimple

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

the class PlaylistSearchPresenter method loadPlaylistSongs.

void loadPlaylistSongs(PlaylistSimple playlist) {
    Map<String, Object> searchOptions = new HashMap<>();
    searchOptions.put(SpotifyService.LIMIT, SpotifyConstants.PLAYLIST_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());
        findPlaylistTracksRecursively(playlist, searchOptions).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).map(playlistPager -> {
            List<PlaylistTrack> filteredTracks = new ArrayList<>();
            filteredTracks.addAll(playlistPager.items);
            for (PlaylistTrack playlistTrack : playlistPager.items) {
                if (playlistTrack.is_local || !playlistTrack.track.is_playable) {
                    filteredTracks.remove(playlistTrack);
                }
            }
            return filteredTracks;
        }).map(filteredTracks -> TrackMapper.playlistTracksToSongs(filteredTracks, user)).subscribe(songs -> {
            if (getView() != null) {
                if (songs.isEmpty())
                    getView().showMessage("Playlist is empty");
                getView().updateSongs(songs);
            }
        }, throwable -> {
            Log.d(LogTag.LOG_SEARCH, "Something went wrong on loading playlist songs");
            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) ArrayList(java.util.ArrayList) 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) Pager(kaaes.spotify.webapi.android.models.Pager) 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) PlaylistSimple(kaaes.spotify.webapi.android.models.PlaylistSimple) List(java.util.List) TracklistRepository(se.zinokader.spotiq.repository.TracklistRepository) PlaylistTrack(kaaes.spotify.webapi.android.models.PlaylistTrack) User(se.zinokader.spotiq.model.User) Party(se.zinokader.spotiq.model.Party) HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) PlaylistTrack(kaaes.spotify.webapi.android.models.PlaylistTrack)

Aggregations

PlaylistSimple (kaaes.spotify.webapi.android.models.PlaylistSimple)2 User (se.zinokader.spotiq.model.User)2 Context (android.content.Context)1 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 ArrayList (java.util.ArrayList)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 Pager (kaaes.spotify.webapi.android.models.Pager)1 PlaylistTrack (kaaes.spotify.webapi.android.models.PlaylistTrack)1 ApplicationConstants (se.zinokader.spotiq.constant.ApplicationConstants)1 FirebaseConstants (se.zinokader.spotiq.constant.FirebaseConstants)1 LogTag (se.zinokader.spotiq.constant.LogTag)1