package org.wikipedia.feed.featured;
import android.net.Uri;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import org.apache.commons.lang3.StringUtils;
import org.wikipedia.R;
import org.wikipedia.WikipediaApp;
import org.wikipedia.dataclient.WikiSite;
import org.wikipedia.feed.model.Card;
import org.wikipedia.feed.model.CardType;
import org.wikipedia.feed.model.FeedPageSummary;
import org.wikipedia.history.HistoryEntry;
import org.wikipedia.page.PageTitle;
import org.wikipedia.util.DateUtil;
public class FeaturedArticleCard extends Card {
@NonNull private FeedPageSummary page;
private int age;
@NonNull private WikiSite wiki;
public FeaturedArticleCard(@NonNull FeedPageSummary page, int age, @NonNull WikiSite wiki) {
this.page = page;
this.age = age;
this.wiki = wiki;
}
@Override
@NonNull
public String title() {
return WikipediaApp.getInstance().getString(R.string.view_featured_article_card_title);
}
@Override
@NonNull
public String subtitle() {
return DateUtil.getFeedCardDateString(age);
}
@NonNull
public WikiSite wikiSite() {
return wiki;
}
@NonNull
String articleTitle() {
return page.getNormalizedTitle();
}
@Nullable
String articleSubtitle() {
return page.getDescription() != null
? StringUtils.capitalize(page.getDescription()) : null;
}
@Override
@Nullable
public Uri image() {
String thumbUrl = page.getThumbnailUrl();
return thumbUrl != null ? Uri.parse(thumbUrl) : null;
}
@Nullable
@Override
public String extract() {
return page.getExtract();
}
@NonNull @Override public CardType type() {
return CardType.FEATURED_ARTICLE;
}
@NonNull
public HistoryEntry historyEntry(int source) {
PageTitle title = new PageTitle(articleTitle(), wikiSite());
if (image() != null) {
title.setThumbUrl(image().toString());
}
title.setDescription(articleSubtitle());
return new HistoryEntry(title, source);
}
@Override
protected int dismissHashCode() {
return page.getTitle().hashCode();
}
}