package io.lbry.browser.tasks; import android.os.AsyncTask; import android.view.View; import android.widget.ProgressBar; import java.util.List; import java.util.Map; import io.lbry.browser.exceptions.ApiCallException; import io.lbry.browser.model.Claim; import io.lbry.browser.utils.Helper; import io.lbry.browser.utils.Lbry; public class ClaimSearchTask extends AsyncTask> { private Map options; private String connectionString; private ClaimSearchResultHandler handler; private View progressView; private ApiCallException error; public ClaimSearchTask(Map options, String connectionString, View progressView, ClaimSearchResultHandler handler) { this.options = options; this.connectionString = connectionString; this.progressView = progressView; this.handler = handler; } protected void onPreExecute() { Helper.setViewVisibility(progressView, View.VISIBLE); } protected List doInBackground(Void... params) { try { return Lbry.claimSearch(options, connectionString); } catch (ApiCallException ex) { error = ex; return null; } } protected void onPostExecute(List claims) { Helper.setViewVisibility(progressView, View.GONE); if (handler != null) { if (claims != null) { handler.onSuccess(claims, claims.size() < Helper.parseInt(options.get("page_size"), 0)); } else { handler.onError(error); } } } public interface ClaimSearchResultHandler { void onSuccess(List claims, boolean hasReachedEnd); void onError(Exception error); } }