package org.wikipedia.feed.news;
import android.net.Uri;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import org.wikipedia.Constants;
import org.wikipedia.dataclient.WikiSite;
import org.wikipedia.feed.model.FeedPageSummary;
import org.wikipedia.json.annotations.Required;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import static org.wikipedia.util.ImageUrlUtil.getUrlForSize;
public final class NewsItem {
@SuppressWarnings("unused,NullableProblems") @Required @NonNull private String story;
@SuppressWarnings("unused,NullableProblems") @NonNull private List<FeedPageSummary> links
= Collections.emptyList();
@NonNull String story() {
return story;
}
@NonNull public List<FeedPageSummary> links() {
return links;
}
@NonNull List<NewsLinkCard> linkCards(WikiSite wiki) {
List<NewsLinkCard> linkCards = new ArrayList<>();
for (FeedPageSummary link : links) {
linkCards.add(new NewsLinkCard(link, wiki));
}
return linkCards;
}
@Nullable public Uri thumb() {
Uri uri = getFirstImageUri(links);
return uri != null ? getUrlForSize(uri, Constants.PREFERRED_THUMB_SIZE) : null;
}
@Nullable Uri featureImage() {
return getFirstImageUri(links);
}
/**
* Iterate through the CardPageItems associated with the news story's links and return the first
* thumb URI found.
*/
@Nullable private Uri getFirstImageUri(List<FeedPageSummary> links) {
for (FeedPageSummary link : links) {
String thumbnail = link.getThumbnailUrl();
if (thumbnail != null) {
return Uri.parse(thumbnail);
}
}
return null;
}
}