package org.goodev.discourse.api;
import android.os.AsyncTask;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.Toast;
import org.apache.http.HttpStatus;
import org.goodev.discourse.App;
import org.goodev.discourse.R;
import org.goodev.discourse.utils.HttpRequest;
import org.goodev.discourse.utils.L;
import java.net.HttpURLConnection;
public class StarTask extends AsyncTask<Void, Void, Boolean> {
public static final String STARRED_PARAM = "starred";
private final String mSite;
private final String mSlug;
private final long mId;
private final boolean mStar;
private final CompoundButton mButton;
private final OnCheckedChangeListener mListener;
public StarTask(CompoundButton btn, OnCheckedChangeListener listener, String site, String slug, long id, boolean star) {
mSlug = slug;
mSite = site;
mId = id;
mStar = star;
mButton = btn;
mListener = listener;
}
@Override
protected Boolean doInBackground(Void... params) {
try {
String url = mSite + String.format(Api.STAR, mSlug, mId);
HttpRequest hr = HttpRequest.put(url);
HttpURLConnection connection = hr.getConnection();
if (App.isLogin()) {
App.getCookieManager().setCookies(connection);
}
int code = hr.form(STARRED_PARAM, String.valueOf(mStar)).code();
L.i("%s star code %d " + mStar, url, code);
L.i(hr.body());
return code == HttpStatus.SC_OK;
} catch (Exception e) {
L.e(e);
return false;
}
}
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected void onPostExecute(Boolean result) {
super.onPostExecute(result);
if (!result.booleanValue()) {
mButton.setOnCheckedChangeListener(null);
mButton.setChecked(!mStar);
mButton.setOnCheckedChangeListener(mListener);
Toast.makeText(mButton.getContext(), mStar ? R.string.add_star_failed : R.string.remove_star_failed, Toast.LENGTH_LONG).show();
}
}
}