package net.coding.program.project.detail.merge;
import android.content.DialogInterface;
import android.content.Intent;
import android.support.v4.app.Fragment;
import net.coding.program.R;
import net.coding.program.common.ui.BackActivity;
import net.coding.program.model.BaseComment;
import net.coding.program.model.RequestData;
import net.coding.program.project.detail.TopicAddActivity;
import net.coding.program.project.detail.TopicEditFragment;
import net.coding.program.task.TaskDespPreviewFragment_;
import net.coding.program.third.EmojiFilter;
import org.androidannotations.annotations.AfterViews;
import org.androidannotations.annotations.EActivity;
import org.androidannotations.annotations.Extra;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.Serializable;
@EActivity(R.layout.activity_comment)
public class CommentActivity extends BackActivity implements TopicEditFragment.SaveData {
private static final String HOST_SEND_COMMENT = "HOST_SEND_COMMENT";
@Extra
CommentParam mParam;
CommentEditFragment editFragment;
Fragment previewFragment;
private TopicAddActivity.TopicData modifyData = new TopicAddActivity.TopicData();
@AfterViews
void init() {
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
String atName = mParam.getAtSome();
if (!atName.isEmpty()) {
modifyData.content = String.format("@%s ", atName);
}
editFragment = CommentEditFragment_.builder().mMergeUrl(mParam.getAtSomeUrl()).build();
previewFragment = TaskDespPreviewFragment_.builder().build();
switchEdit();
}
@Override
public void onBackPressed() {
if (!editFragment.isEmpty()) {
showDialog("发表评论", "确定放弃已写的评论?", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
});
} else {
finish();
}
}
@Override
public void saveData(TopicAddActivity.TopicData data) {
modifyData = data;
}
@Override
public TopicAddActivity.TopicData loadData() {
return modifyData;
}
@Override
public void switchPreview() {
getSupportFragmentManager().beginTransaction().replace(R.id.container, previewFragment, "previewFragment").commit();
}
@Override
public void switchEdit() {
getSupportFragmentManager().beginTransaction().replace(R.id.container, editFragment, "editFragment").commit();
}
@Override
public void exit() {
String contentString = modifyData.content;
if (EmojiFilter.containsEmptyEmoji(this, contentString)) {
return;
}
RequestData request = mParam.getSendCommentParam(contentString);
postNetwork(request.url, request.params, HOST_SEND_COMMENT);
showProgressBar(true, "发送中");
}
@Override
public String getProjectPath() {
return mParam.getProjectPath();
}
@Override
public boolean isProjectPublic() {
return mParam.isPublicProject();
}
@Override
public void parseJson(int code, JSONObject respanse, String tag, int pos, Object data) throws JSONException {
if (tag.equals(HOST_SEND_COMMENT)) {
showProgressBar(false);
if (code == 0) {
JSONObject jsonData = respanse.getJSONObject("data");
if (!jsonData.optString("noteable_id").isEmpty()) {
Intent intent = new Intent();
intent.putExtra("data", jsonData.toString());
setResult(RESULT_OK, intent);
finish();
} else {
BaseComment comment = new BaseComment(jsonData);
Intent intent = new Intent();
intent.putExtra("data", comment);
setResult(RESULT_OK, intent);
finish();
}
} else {
showErrorMsg(code, respanse);
}
}
}
public static abstract class CommentParam implements Serializable {
public abstract RequestData getSendCommentParam(String input);
public abstract String getAtSome();
public abstract String getAtSomeUrl();
public abstract String getProjectPath();
public abstract boolean isPublicProject();
}
}