package net.dev123.yibo.service.task;
import java.util.List;
import net.dev123.commons.Paging;
import net.dev123.exception.LibException;
import net.dev123.mblog.MicroBlog;
import net.dev123.yibo.StatusSubscribeActivity;
import net.dev123.yibo.common.Constants;
import net.dev123.yibo.common.GlobalVars;
import net.dev123.yibo.common.ResourceBook;
import net.dev123.yibo.common.YiBoMeUtil;
import net.dev123.yibo.db.LocalAccount;
import net.dev123.yibo.service.adapter.StatusSubscribeListAdapter;
import net.dev123.yibome.YiBoMe;
import android.os.AsyncTask;
import android.util.Log;
import android.widget.Toast;
public class StatusSubscribeTask extends AsyncTask<Void, Void, List<net.dev123.mblog.entity.Status>> {
private static final String TAG = "StatusSubscribeTask";
private LocalAccount account;
private MicroBlog microBlog = null;
private YiBoMe yiboMe = null;
private StatusSubscribeActivity context;
private StatusSubscribeListAdapter adapter;
private Paging<net.dev123.mblog.entity.Status> paging;
private String resultMsg;
public StatusSubscribeTask(StatusSubscribeActivity context, StatusSubscribeListAdapter adapter) {
this.context = context;
this.adapter = adapter;
this.account = adapter.getAccount();
microBlog = GlobalVars.getMicroBlog(account);
}
@Override
protected void onPreExecute() {
context.showLoadingFooter();
}
@Override
protected List<net.dev123.mblog.entity.Status> doInBackground(Void... params) {
if (microBlog == null) {
return null;
}
yiboMe = YiBoMeUtil.getYiBoMeOAuth(context);
if (yiboMe == null) {
return null;
}
List<net.dev123.mblog.entity.Status> statusList = null;
paging = adapter.getPaging();
net.dev123.mblog.entity.Status max = adapter.getMin();
paging.setGlobalMax(max);
if (paging.moveToNext()) {
try {
statusList = yiboMe.getStatusSubscribe(context.getCatalog(),
account.getServiceProvider(), paging);
} catch (LibException e) {
if (Constants.DEBUG) Log.e(TAG, "Task", e);
resultMsg = ResourceBook.getStatusCodeValue(e.getExceptionCode(), context);
paging.moveToPrevious();
}
}
// Util.getResponseCounts(statusList, microBlog);
return statusList;
}
@Override
protected void onPostExecute(List<net.dev123.mblog.entity.Status> result) {
if (result != null && result.size() > 0) {
adapter.addCacheToDivider(null, result);
} else {
if (resultMsg != null) {
Toast.makeText(adapter.getContext(), resultMsg, Toast.LENGTH_LONG).show();
}
}
if (paging.hasNext()) {
context.showMoreFooter();
}else{
context.showNoMoreFooter();
}
}
}