package com.shejiaomao.weibo.service.task; import com.shejiaomao.maobo.R; import android.app.ProgressDialog; import android.content.Context; import android.os.AsyncTask; import android.util.Log; import android.widget.Toast; import com.cattong.commons.LibException; import com.cattong.commons.Logger; import com.cattong.commons.ServiceProvider; import com.cattong.commons.util.StringUtil; import com.cattong.entity.User; import com.cattong.entity.UserExtInfo; import com.cattong.weibo.Weibo; import com.shejiaomao.common.ResourceBook; import com.shejiaomao.weibo.SheJiaoMaoApplication; import com.shejiaomao.weibo.activity.ProfileActivity; import com.shejiaomao.weibo.common.GlobalVars; import com.shejiaomao.weibo.db.LocalAccount; import com.shejiaomao.weibo.service.listener.ProfileChangeListener; public class QueryUserTask extends AsyncTask<Void, Void, User> { private static final String TAG = "QueryUserTask"; private Context context; private LocalAccount account; private Weibo 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; SheJiaoMaoApplication sheJiaoMao = (SheJiaoMaoApplication)context.getApplicationContext(); this.account = sheJiaoMao.getCurrentAccount(); this.microBlog = GlobalVars.getMicroBlog(sheJiaoMao.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.getUserId(), user.getName()) && StringUtil.isEquals(user.getName(), user.getScreenName()); try { if (isMentionLink) { resultUser = microBlog.showUserByDisplayName(user.getDisplayName()); } else { resultUser = microBlog.showUser(user.getUserId()); } userExtInfo = queryUserExtInfo(resultUser); } catch (LibException e) { if (Logger.isDebug()) Log.e(TAG, "Task", e); resultMsg = ResourceBook.getResultCodeValue(e.getErrorCode(), 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; } if (StringUtil.isNotEmpty(user.getVerifyInfo())) { userExtInfo = new UserExtInfo(); userExtInfo.setServiceProvider(user.getServiceProvider()); userExtInfo.setUserId(user.getUserId()); userExtInfo.setVerifyInfo(user.getVerifyInfo()); return userExtInfo; } // SocialCat socialCat = Util.getSocialCat(context); // // try { // userExtInfo = socialCat.getUserExtInfo(user.getServiceProvider(), user.getUserId()); // } catch (LibException e) { // Logger.error(TAG, e); // } return userExtInfo; } }