package org.wikipedia.feed.continuereading; import android.content.Context; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import org.wikipedia.dataclient.WikiSite; import org.wikipedia.feed.dataclient.FeedClient; import org.wikipedia.feed.model.Card; import org.wikipedia.history.HistoryEntry; import org.wikipedia.util.log.L; import java.io.IOException; import java.util.Collections; public class ContinueReadingClient implements FeedClient { private static final int MIN_DAYS_OLD = 1; @Nullable private LastPageReadTask lastPageReadTask; @Override public void request(@NonNull Context context, @NonNull WikiSite wiki, int age, @NonNull final FeedClient.Callback cb) { cancel(); lastPageReadTask = new LastPageReadTask(context, age, MIN_DAYS_OLD) { @Override public void onFinish(@Nullable HistoryEntry entry) { if (entry == null) { cb.error(new IOException("Error fetching last-read page")); return; } cb.success(Collections.singletonList((Card) new ContinueReadingCard(entry))); } @Override public void onCatch(Throwable caught) { L.w("Error fetching last-read page", caught); cb.error(caught); } }; lastPageReadTask.execute(); } @Override public void cancel() { if (lastPageReadTask != null) { lastPageReadTask.cancel(); lastPageReadTask = null; } } }