package org.cnodejs.android.md.presenter.implement; import android.app.Activity; import android.support.annotation.NonNull; import android.text.TextUtils; import org.cnodejs.android.md.R; import org.cnodejs.android.md.model.api.ApiClient; import org.cnodejs.android.md.model.api.DefaultCallback; import org.cnodejs.android.md.model.entity.Author; import org.cnodejs.android.md.model.entity.Reply; import org.cnodejs.android.md.model.entity.Result; import org.cnodejs.android.md.model.storage.LoginShared; import org.cnodejs.android.md.model.storage.SettingShared; import org.cnodejs.android.md.presenter.contract.ICreateReplyPresenter; import org.cnodejs.android.md.ui.view.ICreateReplyView; import org.joda.time.DateTime; import java.util.ArrayList; import okhttp3.Headers; public class CreateReplyPresenter implements ICreateReplyPresenter { private final Activity activity; private final ICreateReplyView createReplyView; public CreateReplyPresenter(@NonNull Activity activity, @NonNull ICreateReplyView createReplyView) { this.activity = activity; this.createReplyView = createReplyView; } @Override public void createReplyAsyncTask(@NonNull String topicId, String content, final String targetId) { if (TextUtils.isEmpty(content)) { createReplyView.onContentError(activity.getString(R.string.content_empty_error_tip)); } else { final String finalContent; if (SettingShared.isEnableTopicSign(activity)) { // 添加小尾巴 finalContent = content + "\n\n" + SettingShared.getTopicSignContent(activity); } else { finalContent = content; } createReplyView.onReplyTopicStart(); ApiClient.service.createReply(topicId, LoginShared.getAccessToken(activity), finalContent, targetId).enqueue(new DefaultCallback<Result.ReplyTopic>(activity) { @Override public boolean onResultOk(int code, Headers headers, Result.ReplyTopic result) { Reply reply = new Reply(); reply.setId(result.getReplyId()); Author author = new Author(); author.setLoginName(LoginShared.getLoginName(getActivity())); author.setAvatarUrl(LoginShared.getAvatarUrl(getActivity())); reply.setAuthor(author); reply.setContentFromLocal(finalContent); // 这里要使用本地的访问器 reply.setCreateAt(new DateTime()); reply.setUpList(new ArrayList<String>()); reply.setReplyId(targetId); createReplyView.onReplyTopicOk(reply); return false; } @Override public void onFinish() { createReplyView.onReplyTopicFinish(); } }); } } }