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); } }