package net.dev123.yibo.service.task; import net.dev123.commons.ServiceProvider; import net.dev123.commons.util.StringUtil; import net.dev123.exception.LibException; import net.dev123.mblog.MicroBlog; import net.dev123.mblog.entity.User; import net.dev123.yibo.ProfileActivity; import net.dev123.yibo.R; import net.dev123.yibo.YiBoApplication; 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.listener.ProfileChangeListener; import net.dev123.yibome.YiBoMe; import net.dev123.yibome.entity.UserExtInfo; import android.app.ProgressDialog; import android.content.Context; import android.os.AsyncTask; import android.util.Log; import android.widget.Toast; public class QueryUserTask extends AsyncTask<Void, Void, User> { private static final String TAG = "QueryUserTask"; private Context context; private LocalAccount account; private MicroBlog microBlog; private ProfileChangeListener profileChangeListener; private User user; private UserExtInfo userExtInfo; private ProgressDialog dialog; private String resultMsg; public QueryUserTask(Context context, User user) { this(context, user, null); } public QueryUserTask(Context context, User user, ProfileChangeListener profileChangeListener) { this.context = context; this.user = user; this.profileChangeListener = profileChangeListener; YiBoApplication yibo = (YiBoApplication)context.getApplicationContext(); this.account = yibo.getCurrentAccount(); this.microBlog = GlobalVars.getMicroBlog(yibo.getCurrentAccount()); } @Override protected void onPreExecute() { dialog = ProgressDialog.show(context, "", context.getString(R.string.msg_personal_loading)); dialog.setCancelable(true); } @Override protected User doInBackground(Void... params) { if (user == null || microBlog == null) { return null; } User resultUser = null; //是否来自@DisplayName的链接点击 boolean isMentionLink = StringUtil.isEquals(user.getId(), user.getName()) && StringUtil.isEquals(user.getName(), user.getScreenName()); try { if (isMentionLink) { resultUser = microBlog.showUserByDisplayName(user.getDisplayName()); } else { resultUser = microBlog.showUser(user.getId()); } userExtInfo = queryUserExtInfo(resultUser); } catch (LibException e) { if (Constants.DEBUG) Log.e(TAG, "Task", e); resultMsg = ResourceBook.getStatusCodeValue(e.getExceptionCode(), context); } return resultUser; } protected void onPostExecute(User resultUser) { if (dialog.isShowing() && dialog.getContext() != null ) { try { dialog.dismiss(); } catch(Exception e){} } if (resultUser != null) { if (context instanceof ProfileActivity) { ProfileActivity profileActivity = (ProfileActivity)context; profileActivity.setUser(resultUser); profileActivity.setVerifyInfo(userExtInfo); } else if (profileChangeListener != null) { profileChangeListener.updateContentView(resultUser); account.setUser(resultUser); } } else if(resultMsg != null) { Toast.makeText(context, resultMsg, Toast.LENGTH_LONG).show(); } }; private UserExtInfo queryUserExtInfo(User user) { UserExtInfo userExtInfo = null; if (user == null || !user.isVerified() || user.getServiceProvider() == ServiceProvider.Fanfou || user.getServiceProvider() == ServiceProvider.Twitter) { return userExtInfo; } YiBoMe yiboMe = YiBoMeUtil.getYiBoMeNullAuth(); try { userExtInfo = yiboMe.getUserExtInfo(user.getId(), user.getServiceProvider()); } catch (LibException e) { if (Constants.DEBUG) Log.e(TAG, "Task", e); } return userExtInfo; } }