package net.coding.program.project.detail.merge;
import android.support.v4.app.Fragment;
import com.loopj.android.http.RequestParams;
import net.coding.program.R;
import net.coding.program.common.Global;
import net.coding.program.common.base.MyJsonResponse;
import net.coding.program.common.network.MyAsyncHttpClient;
import net.coding.program.common.ui.BackActivity;
import net.coding.program.model.ProjectObject;
import net.coding.program.project.detail.TopicAddActivity;
import net.coding.program.project.detail.TopicEditFragment;
import net.coding.program.task.TaskDescrip;
import net.coding.program.task.TaskDespEditFragment;
import net.coding.program.task.TaskDespEditFragment_;
import org.androidannotations.annotations.AfterViews;
import org.androidannotations.annotations.EActivity;
import org.androidannotations.annotations.Extra;
import org.json.JSONObject;
import java.io.Serializable;
@EActivity(R.layout.activity_readme_edit)
public class ReadmeEditActivity extends BackActivity implements TaskDescrip, TopicEditFragment.SaveData {
@Extra
ProjectObject mProjectObject;
@Extra
PostParam mPostParam;
TaskDespEditFragment editFragment;
Fragment previewFragment;
private TopicAddActivity.TopicData modifyData = new TopicAddActivity.TopicData();
@AfterViews
protected final void initTaskDescriptionActivity() {
editFragment = TaskDespEditFragment_.builder().build();
String url = mProjectObject.getHttpReadmePreview(mPostParam.version, mPostParam.name);
previewFragment = ReadmePerviewFragment_.builder().url(url).build();
// "https://coding.net/api" + "/user/gggg/project/gggg_ghhjj" + "/git/blob-preview/master%252FREADME.md"
// if (markdown.isEmpty()) {
// getSupportFragmentManager().beginTransaction().replace(R.id.container, editFragment).commit();
// } else {
modifyData.content = mPostParam.data;
getSupportFragmentManager().beginTransaction().replace(R.id.container, editFragment).commit();
// }
}
@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).commit();
}
@Override
public void switchEdit() {
getSupportFragmentManager().beginTransaction().replace(R.id.container, editFragment).commit();
}
@Override
public void exit() {
RequestParams params = new RequestParams();
params.put("content", modifyData.content);
params.put("message", "update README.md");
params.put("lastCommitSha", mPostParam.lastCommitId);
String url = mProjectObject.getHttpReadme(mPostParam.version, mPostParam.name);
MyAsyncHttpClient.post(this, url, params, new MyJsonResponse(ReadmeEditActivity.this) {
@Override
public void onMySuccess(JSONObject response) {
super.onMySuccess(response);
closeAndSave("");
}
@Override
public void onFinish() {
super.onFinish();
showProgressBar(false);
}
});
showProgressBar(true);
}
@Override
public String getProjectPath() {
return mProjectObject.getProjectPath();
}
@Override
public boolean isProjectPublic() {
return mProjectObject.isPublic();
}
@Override
public void closeAndSave(String s) {
setResult(RESULT_OK);
finish();
}
@Override
public String createLocateHtml(String s) {
try {
final String bubble = Global.readTextFile(getAssets().open("markdown.html"));
return bubble.replace("${webview_content}", s);
} catch (Exception e) {
Global.errorLog(e);
return "";
}
}
public static class PostParam implements Serializable {
String lastCommitId;
String name;
String data;
String version;
public PostParam(JSONObject jsonData, String version) {
JSONObject headCommit = jsonData.optJSONObject("headCommit");
lastCommitId = headCommit.optString("commitId", "");
JSONObject json = jsonData.optJSONObject("readme");
name = json.optString("name", "");
data = json.optString("data", "");
this.version = version;
}
}
}