* Use commentron instead of Comment SDK calls * Use current timestamp as 'id' for comment server request
85 lines
3 KiB
Java
85 lines
3 KiB
Java
package io.lbry.browser.tasks;
|
|
|
|
import android.os.AsyncTask;
|
|
import android.view.View;
|
|
|
|
import org.json.JSONException;
|
|
import org.json.JSONObject;
|
|
|
|
import java.io.IOException;
|
|
import java.util.Objects;
|
|
|
|
import io.lbry.browser.exceptions.ApiCallException;
|
|
import io.lbry.browser.model.Comment;
|
|
import io.lbry.browser.utils.Comments;
|
|
import io.lbry.browser.utils.Helper;
|
|
import okhttp3.Response;
|
|
|
|
public class CommentCreateTask extends AsyncTask<Void, Void, Comment> {
|
|
private final Comment comment;
|
|
private final View progressView;
|
|
private final CommentCreateWithTipHandler handler;
|
|
private Exception error;
|
|
|
|
public CommentCreateTask(Comment comment, View progressView, CommentCreateWithTipHandler handler) {
|
|
this.comment = comment;
|
|
this.progressView = progressView;
|
|
this.handler = handler;
|
|
}
|
|
|
|
protected void onPreExecute() {
|
|
Helper.setViewVisibility(progressView, View.VISIBLE);
|
|
}
|
|
|
|
public Comment doInBackground(Void... params) {
|
|
Comment createdComment = null;
|
|
try {
|
|
// check comments status endpoint
|
|
Comments.checkCommentsEndpointStatus();
|
|
|
|
JSONObject comment_body = new JSONObject();
|
|
comment_body.put("comment", comment.getText());
|
|
comment_body.put("claim_id", comment.getClaimId());
|
|
if (!Helper.isNullOrEmpty(comment.getParentId())) {
|
|
comment_body.put("parent_id", comment.getParentId());
|
|
}
|
|
comment_body.put("channel_id", comment.getChannelId());
|
|
comment_body.put("channel_name", comment.getChannelName());
|
|
|
|
JSONObject jsonChannelSign = Comments.channelSign(comment_body, comment.getChannelId(), comment.getChannelName());
|
|
|
|
if (jsonChannelSign.has("signature") && jsonChannelSign.has("signing_ts")) {
|
|
comment_body.put("signature", jsonChannelSign.getString("signature"));
|
|
comment_body.put("signing_ts", jsonChannelSign.getString("signing_ts"));
|
|
}
|
|
|
|
Response resp = Comments.performRequest(comment_body, "comment.Create");
|
|
String responseString = Objects.requireNonNull(resp.body()).string();
|
|
resp.close();
|
|
JSONObject jsonResponse = new JSONObject(responseString);
|
|
|
|
if (jsonResponse.has("result"))
|
|
createdComment = Comment.fromJSONObject(jsonResponse.getJSONObject("result"));
|
|
} catch (ApiCallException | ClassCastException | IOException | JSONException ex) {
|
|
error = ex;
|
|
}
|
|
|
|
return createdComment;
|
|
}
|
|
|
|
protected void onPostExecute(Comment createdComment) {
|
|
Helper.setViewVisibility(progressView, View.GONE);
|
|
if (handler != null) {
|
|
if (createdComment != null) {
|
|
handler.onSuccess(createdComment);
|
|
} else {
|
|
handler.onError(error);
|
|
}
|
|
}
|
|
}
|
|
|
|
public interface CommentCreateWithTipHandler {
|
|
void onSuccess(Comment createdComment);
|
|
void onError(Exception error);
|
|
}
|
|
}
|