package org.softeg.slartus.forpdaplus.controls.quickpost;
import android.content.Context;
import android.os.AsyncTask;
import android.text.TextUtils;
import com.afollestad.materialdialogs.MaterialDialog;
import org.softeg.slartus.forpdaapi.post.PostApi;
import org.softeg.slartus.forpdaplus.App;
import org.softeg.slartus.forpdaplus.Client;
import org.softeg.slartus.forpdaplus.R;
import org.softeg.slartus.forpdaplus.classes.TopicBodyBuilder;
import org.softeg.slartus.forpdaplus.classes.forum.ExtTopic;
import org.softeg.slartus.forpdaplus.prefs.Preferences;
/**
* Created by slartus on 23.02.14.
*/
public class PostTask extends AsyncTask<String, Void, Boolean> {
public class PostResult {
public Boolean Success;
public ExtTopic ExtTopic;
public String ForumErrorMessage;
public Throwable Exception;
public String TopicBody;
public String PostResultBody;// страница результата
}
private final MaterialDialog dialog;
private String mPost;
private String mForumId;
private String mTopicId;
private String mAuthKey;
private Boolean mEnableEmotics;
private Boolean mEnableSign;
protected PostResult mPostResult;
public PostTask(Context context, String post, String forumId, String topicId, String authKey,
Boolean enableEmotics, Boolean enableSign) {
mPost = post;
mForumId = forumId;
mTopicId = topicId;
mAuthKey = authKey;
mEnableEmotics = enableEmotics;
mEnableSign = enableSign;
dialog = new MaterialDialog.Builder(context)
.progress(true,0)
.cancelable(false)
.content(R.string.sending_message)
.build();
}
@Override
protected Boolean doInBackground(String... params) {
try {
mPostResult = new PostResult();
mPostResult.PostResultBody = Client.getInstance().reply(mForumId, mTopicId, mAuthKey,
mPost, mEnableSign, mEnableEmotics, true, null);
mPostResult.ForumErrorMessage = PostApi.checkPostErrors(mPostResult.PostResultBody);
if (!TextUtils.isEmpty(mPostResult.ForumErrorMessage))
return false;
String lastUrl = Client.getInstance().getRedirectUri() == null ?
("http://4pda.ru/forum/index.php?showtopic=" + mTopicId + "&view=getnewpost")
: Client.getInstance().getRedirectUri().toString();
TopicBodyBuilder topicBodyBuilder = Client.getInstance().parseTopic(mPostResult.PostResultBody, App.getInstance(), lastUrl,
Preferences.Topic.getSpoilFirstPost());
mPostResult.PostResultBody = null;
mPostResult.ExtTopic = topicBodyBuilder.getTopic();
mPostResult.TopicBody = topicBodyBuilder.getBody();
return true;
} catch (Throwable e) {
mPostResult.Exception = e;
return false;
}
}
// can use UI thread here
protected void onPreExecute() {
this.dialog.show();
}
protected void onPostExecute(final Boolean success) {
if (this.dialog.isShowing()) {
this.dialog.dismiss();
}
mPostResult.Success = success;
}
}