package com.sregg.android.tv.spotifyPlayer.fragments;
import android.content.Intent;
import android.os.Bundle;
import android.support.v17.leanback.widget.Action;
import android.support.v17.leanback.widget.OnItemViewClickedListener;
import android.support.v17.leanback.widget.Presenter;
import android.util.Log;
import com.crashlytics.android.answers.Answers;
import com.crashlytics.android.answers.ContentViewEvent;
import com.sregg.android.tv.spotifyPlayer.Constants;
import com.sregg.android.tv.spotifyPlayer.R;
import com.sregg.android.tv.spotifyPlayer.SpotifyTvApplication;
import com.sregg.android.tv.spotifyPlayer.activities.AlbumActivity;
import com.sregg.android.tv.spotifyPlayer.activities.ArtistsAlbumsActivity;
import com.sregg.android.tv.spotifyPlayer.presenters.AlbumDetailsPresenter;
import com.sregg.android.tv.spotifyPlayer.presenters.AlbumTrackRowPresenter;
import com.sregg.android.tv.spotifyPlayer.utils.Utils;
import java.util.ArrayList;
import java.util.List;
import kaaes.spotify.webapi.android.models.Album;
import kaaes.spotify.webapi.android.models.ArtistSimple;
import kaaes.spotify.webapi.android.models.TrackSimple;
import retrofit.Callback;
import retrofit.RetrofitError;
import retrofit.client.Response;
public class AlbumDetailsFragment extends TracksDetailsFragment {
private static final String TAG = AlbumDetailsFragment.class.getSimpleName();
private static final long ACTION_VIEW_ARTIST = 2;
private String mAlbumId;
private Album mAlbum;
private List<String> mAlbumTrackUris;
@Override
public void onCreate(Bundle savedInstanceState) {
Log.d(TAG, "onCreate");
super.onCreate(savedInstanceState);
Intent intent = getActivity().getIntent();
mAlbumId = intent.getStringExtra(AlbumActivity.ARG_ALBUM_ID);
loadAlbum();
Answers.getInstance().logContentView(new ContentViewEvent()
.putContentName(Constants.ANSWERS_CONTENT_ALBUM)
.putContentType(Constants.ANSWERS_CONTENT_TYPE)
.putContentId(mAlbumId));
}
@Override
protected Presenter getDetailsPresenter() {
return new AlbumDetailsPresenter();
}
@Override
protected Presenter getTrackRowPresenter(OnItemViewClickedListener onTrackRowItemClicked) {
return new AlbumTrackRowPresenter(onTrackRowItemClicked);
}
@Override
protected boolean onActionClicked(Action action) {
if (super.onActionClicked(action)) {
return true;
}
if (action.getId() == ACTION_VIEW_ARTIST) {
ArtistSimple artist = null;
if (mAlbum.artists.size() > 0) {
artist = mAlbum.artists.get(0);
}
if (artist != null) {
ArtistsAlbumsActivity.launch(getActivity(), artist.id, artist.name);
}
return true;
}
return false;
}
@Override
List<Action> getDetailActions() {
List<Action> actions = new ArrayList<>();
actions.add(new Action(
ACTION_VIEW_ARTIST, getResources().getString(R.string.go_to_artist),
null
));
return actions;
}
@Override
protected List<TrackSimple> getTracks() {
return mAlbum.tracks.items;
}
@Override
protected List<String> getTrackUris() {
return mAlbumTrackUris;
}
@Override
protected String getObjectUri() {
return mAlbum != null ? mAlbum.uri : null;
}
@Override
protected Object getObject() {
return mAlbum;
}
private void loadAlbum() {
// load artist from API to get their image
SpotifyTvApplication.getInstance().getSpotifyService().getAlbum(mAlbumId, new Callback<Album>() {
@Override
public void success(final Album album, Response response) {
if (!isAdded() || getActivity() == null) {
return;
}
mAlbum = album;
mAlbumTrackUris = Utils.getTrackUrisFromTrackPager(mAlbum.tracks);
onContentLoaded();
}
@Override
public void failure(RetrofitError error) {
}
});
}
}