diff --git a/app/src/main/java/awais/instagrabber/activities/DirectMessageThread.java b/app/src/main/java/awais/instagrabber/activities/DirectMessageThread.java index 97147eca..5162c986 100644 --- a/app/src/main/java/awais/instagrabber/activities/DirectMessageThread.java +++ b/app/src/main/java/awais/instagrabber/activities/DirectMessageThread.java @@ -207,13 +207,39 @@ public final class DirectMessageThread extends BaseLanguageActivity { private final View.OnClickListener newCommentListener = v -> { if (Utils.isEmpty(dmsBinding.commentText.getText().toString()) && v == dmsBinding.commentSend) Toast.makeText(getApplicationContext(), R.string.comment_send_empty_comment, Toast.LENGTH_SHORT).show(); - else if (v == dmsBinding.commentSend) new CommentAction().execute(); + else if (v == dmsBinding.commentSend) { + final CommentAction action = new CommentAction(dmsBinding.commentText.getText().toString(), threadid); + action.setOnTaskCompleteListener(new CommentAction.OnTaskCompleteListener() { + @Override + public void onTaskComplete(boolean ok) { + if (!ok) { + Toast.makeText(getApplicationContext(), R.string.downloader_unknown_error, Toast.LENGTH_SHORT).show(); + return; + } + dmsBinding.commentText.setText(""); + dmsBinding.commentText.clearFocus(); + directItemModels.clear(); + messageItemsAdapter.notifyDataSetChanged(); + new UserInboxFetcher(threadid, UserInboxDirection.OLDER, null, fetchListener).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); + } + }); + action.execute(); + } }; - class CommentAction extends AsyncTask { - boolean ok = false; + public static class CommentAction extends AsyncTask { + private final String text; + private final String threadId; - protected Void doInBackground(Void... lmao) { + private OnTaskCompleteListener listener; + + public CommentAction(String text, String threadId) { + this.text = text; + this.threadId = threadId; + } + + protected Boolean doInBackground(Void... lmao) { + boolean ok = false; final String url2 = "https://i.instagram.com/api/v1/direct_v2/threads/broadcast/text/"; final String cookie = settingsHelper.getString(Constants.COOKIE); try { @@ -221,7 +247,7 @@ public final class DirectMessageThread extends BaseLanguageActivity { urlConnection2.setRequestMethod("POST"); urlConnection2.setRequestProperty("User-Agent", Constants.I_USER_AGENT); urlConnection2.setUseCaches(false); - final String commentText = URLEncoder.encode(dmsBinding.commentText.getText().toString(), "UTF-8") + final String commentText = URLEncoder.encode(text, "UTF-8") .replaceAll("\\+", "%20").replaceAll("\\%21", "!").replaceAll("\\%27", "'") .replaceAll("\\%28", "(").replaceAll("\\%29", ")").replaceAll("\\%7E", "~"); final String cc = UUID.randomUUID().toString(); @@ -231,7 +257,7 @@ public final class DirectMessageThread extends BaseLanguageActivity { +"\",\"client_context\":\"" + cc +"\",\"mutation_token\":\"" + cc +"\",\"text\":\"" + commentText - +"\",\"thread_ids\":\"["+threadid + +"\",\"thread_ids\":\"["+ threadId +"]\",\"action\":\"send_item\"}"); urlConnection2.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); urlConnection2.setRequestProperty("Content-Length", "" + Integer.toString(urlParameters2.getBytes().length)); @@ -249,19 +275,24 @@ public final class DirectMessageThread extends BaseLanguageActivity { } catch (Throwable ex) { Log.e("austin_debug", "dm send: " + ex); } - return null; + return ok; } @Override - protected void onPostExecute(Void result) { - if (!ok) Toast.makeText(getApplicationContext(), R.string.downloader_unknown_error, Toast.LENGTH_SHORT).show(); - else { - dmsBinding.commentText.setText(""); - dmsBinding.commentText.clearFocus(); - directItemModels.clear(); - messageItemsAdapter.notifyDataSetChanged(); - new UserInboxFetcher(threadid, UserInboxDirection.OLDER, null, fetchListener).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); + protected void onPostExecute(final Boolean result) { + if (listener != null) { + listener.onTaskComplete(result); } } + + public void setOnTaskCompleteListener(final OnTaskCompleteListener listener) { + if (listener != null) { + this.listener = listener; + } + } + + public interface OnTaskCompleteListener { + void onTaskComplete(boolean ok); + } } } \ No newline at end of file