package net.dev123.yibo.service.task;
import net.dev123.commons.Constants;
import net.dev123.exception.LibException;
import net.dev123.mblog.MicroBlog;
import net.dev123.mblog.entity.User;
import net.dev123.yibo.R;
import net.dev123.yibo.common.GlobalVars;
import net.dev123.yibo.common.ResourceBook;
import net.dev123.yibo.service.adapter.CacheAdapter;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnCancelListener;
import android.os.AsyncTask;
import android.util.Log;
import android.widget.Toast;
public class GroupMemberUnfollowTask extends AsyncTask<Void, Void, User> {
private static final String TAG = "GroupMemberUnfollowTask";
private Context context;
private CacheAdapter<User> adapter;
private User user;
private MicroBlog microBlog;
private ProgressDialog progressDialog;
private String resultMsg;
public GroupMemberUnfollowTask(CacheAdapter<User> adapter, User user) {
this.context = adapter.getContext();
this.adapter = adapter;
this.user = user;
this.microBlog = GlobalVars.getMicroBlog(adapter.getAccount());
}
@Override
protected void onPreExecute() {
super.onPreExecute();
progressDialog = ProgressDialog.show(context, null,
context.getString(R.string.msg_personal_unfollowing));
progressDialog.setCancelable(true);
progressDialog.setOnCancelListener(onCancelListener);
}
@Override
protected User doInBackground(Void... params) {
if (user == null || microBlog == null) {
return null;
}
User result = null;
try {
result = microBlog.destroyFriendship(user.getId());
} catch (LibException e) {
if (Constants.DEBUG) Log.e(TAG, TAG, e);
resultMsg = ResourceBook.getStatusCodeValue(e.getExceptionCode(), context);
}
return result;
}
@Override
protected void onPostExecute(User result) {
super.onPostExecute(result);
try {
progressDialog.dismiss();
} catch(Exception e){}
if (result == null) {
Toast.makeText(context, resultMsg, Toast.LENGTH_SHORT).show();
return;
}
boolean isSuccess = adapter.remove(user);
if (isSuccess) {
Toast.makeText(context, R.string.msg_personal_unfollow_success, Toast.LENGTH_SHORT).show();
}
}
private OnCancelListener onCancelListener = new OnCancelListener() {
public void onCancel(DialogInterface dialog) {
GroupMemberUnfollowTask.this.cancel(true);
}
};
}