package com.battlelancer.seriesguide.loaders;
import android.app.Activity;
import android.support.annotation.NonNull;
import android.text.format.DateUtils;
import com.battlelancer.seriesguide.adapters.NowAdapter;
import com.uwetrottmann.trakt5.entities.HistoryEntry;
import com.uwetrottmann.trakt5.entities.UserSlug;
import com.uwetrottmann.trakt5.enums.Extended;
import com.uwetrottmann.trakt5.enums.HistoryType;
import com.uwetrottmann.trakt5.services.Users;
import java.util.List;
import retrofit2.Call;
/**
* Loads last 72 hours of trakt watched movies, or at least one older watched movie.
*/
public class TraktRecentMovieHistoryLoader extends TraktRecentEpisodeHistoryLoader {
public TraktRecentMovieHistoryLoader(Activity activity) {
super(activity);
}
@Override
protected void addItems(List<NowAdapter.NowItem> items, List<HistoryEntry> history) {
// add movies
long threeDaysAgo = System.currentTimeMillis() - 3 * DateUtils.DAY_IN_MILLIS;
for (int i = 0, size = history.size(); i < size; i++) {
HistoryEntry entry = history.get(i);
if (entry.movie == null || entry.movie.ids == null || entry.movie.ids.tmdb == null
|| entry.watched_at == null) {
// missing required values
continue;
}
// only include movies watched in the last 72 hours
// however, include at least one older one if there are none
if (entry.watched_at.isBefore(threeDaysAgo) && items.size() > 1) {
break;
}
// trakt has removed image support: currently displaying no image
items.add(new NowAdapter.NowItem()
.displayData(
entry.watched_at.getMillis(),
entry.movie.title,
null,
null
)
.tmdbId(entry.movie.ids.tmdb)
.recentlyWatchedTrakt(entry.action)
);
}
}
@NonNull
@Override
protected String getAction() {
return "get user movie history";
}
@Override
protected Call<List<HistoryEntry>> buildCall() {
return buildUserMovieHistoryCall(traktUsers.get());
}
public static Call<List<HistoryEntry>> buildUserMovieHistoryCall(Users traktUsers) {
return traktUsers
.history(UserSlug.ME, HistoryType.MOVIES, 1, MAX_HISTORY_SIZE, Extended.DEFAULT_MIN,
null, null);
}
}