package org.wikipedia.feed.mostread; import android.content.Context; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.annotation.StringRes; import android.support.annotation.VisibleForTesting; import org.wikipedia.R; import org.wikipedia.WikipediaApp; import org.wikipedia.dataclient.WikiSite; import org.wikipedia.feed.model.CardType; import org.wikipedia.feed.model.FeedPageSummary; import org.wikipedia.feed.model.ListCard; import org.wikipedia.util.DateUtil; import java.util.ArrayList; import java.util.List; import java.util.concurrent.TimeUnit; public class MostReadListCard extends ListCard<MostReadItemCard> { private static final int MAX_SIZE = 5; @NonNull private final MostReadArticles articles; public MostReadListCard(@NonNull MostReadArticles articles, @NonNull WikiSite wiki) { super(toItems(articles.articles(), wiki)); this.articles = articles; } @NonNull @Override public String title() { return getString(R.string.most_read_list_card_title); } @Nullable @Override public String subtitle() { return DateUtil.getFeedCardDateString(articles.date()); } @NonNull @Override public CardType type() { return CardType.MOST_READ_LIST; } @NonNull @VisibleForTesting public static List<MostReadItemCard> toItems(@NonNull List<FeedPageSummary> articles, @NonNull WikiSite wiki) { List<MostReadItemCard> cards = new ArrayList<>(); for (FeedPageSummary article : articles) { cards.add(new MostReadItemCard(article, wiki)); } return cards.subList(0, Math.min(cards.size(), MAX_SIZE)); } @NonNull private String getString(@StringRes int id, @Nullable Object... formatArgs) { return context().getString(id, formatArgs); } @NonNull private Context context() { return WikipediaApp.getInstance(); } @Override protected int dismissHashCode() { return (int) TimeUnit.MILLISECONDS.toDays(articles.date().getTime()); } }