diff options
Diffstat (limited to 'WordPress/src/main/java/org/wordpress/android/ui/accounts/helpers/UpdateBlogListTask.java')
-rw-r--r-- | WordPress/src/main/java/org/wordpress/android/ui/accounts/helpers/UpdateBlogListTask.java | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/WordPress/src/main/java/org/wordpress/android/ui/accounts/helpers/UpdateBlogListTask.java b/WordPress/src/main/java/org/wordpress/android/ui/accounts/helpers/UpdateBlogListTask.java new file mode 100644 index 000000000..12e143b59 --- /dev/null +++ b/WordPress/src/main/java/org/wordpress/android/ui/accounts/helpers/UpdateBlogListTask.java @@ -0,0 +1,77 @@ +package org.wordpress.android.ui.accounts.helpers; + +import android.content.Context; +import android.os.AsyncTask; + +import org.wordpress.android.ui.accounts.BlogUtils; +import org.wordpress.android.ui.accounts.helpers.FetchBlogListAbstract.Callback; +import org.wordpress.android.models.AccountHelper; +import org.wordpress.android.util.AppLog; +import org.wordpress.android.util.AppLog.T; +import org.wordpress.android.util.CoreEvents; + +import java.util.List; +import java.util.Map; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; + +import de.greenrobot.event.EventBus; + +public class UpdateBlogListTask extends AsyncTask<Void, Void, List<Map<String, Object>>> { + public static final int GET_BLOG_LIST_TIMEOUT = 30000; + protected int mErrorMsgId; + protected Context mContext; + protected boolean mBlogListChanged; + protected static List<Map<String, Object>> mUserBlogList; + + public UpdateBlogListTask(Context context) { + mContext = context; + } + + @Override + protected void onPreExecute() { + } + + @Override + protected List<Map<String, Object>> doInBackground(Void... args) { + final String username = AccountHelper.getDefaultAccount().getUserName(); + final CountDownLatch countDownLatch = new CountDownLatch(1); + FetchBlogListWPCom fetchBlogList = new FetchBlogListWPCom(mContext); + fetchBlogList.execute(new Callback() { + @Override + public void onSuccess(List<Map<String, Object>> userBlogList) { + mUserBlogList = userBlogList; + if (mUserBlogList != null) { + mBlogListChanged = BlogUtils.syncBlogs(mContext, mUserBlogList, username); + } + countDownLatch.countDown(); + } + + @Override + public void onError(int messageId, boolean twoStepCodeRequired, boolean httpAuthRequired, boolean erroneousSslCertificate, + String clientResponse) { + mErrorMsgId = messageId; + countDownLatch.countDown(); + } + }); + try { + countDownLatch.await(GET_BLOG_LIST_TIMEOUT, TimeUnit.MILLISECONDS); + } catch (InterruptedException e) { + AppLog.e(T.NUX, e); + } + return mUserBlogList; + } + + public static class GenericUpdateBlogListTask extends UpdateBlogListTask { + public GenericUpdateBlogListTask(Context context) { + super(context); + } + + @Override + protected void onPostExecute(final List<Map<String, Object>> userBlogList) { + if (mBlogListChanged) { + EventBus.getDefault().post(new CoreEvents.BlogListChanged()); + } + } + } +} |