From 6c478d8626f5c5f46c15b0648ae1dd19068a270e Mon Sep 17 00:00:00 2001 From: Ammar Githam Date: Sun, 16 Aug 2020 05:59:16 +0900 Subject: [PATCH] move CommentAction to its own file --- .../activities/DirectMessageThread.java | 90 +++---------------- .../asyncs/direct_messages/CommentAction.java | 84 +++++++++++++++++ 2 files changed, 94 insertions(+), 80 deletions(-) create mode 100644 app/src/main/java/awais/instagrabber/asyncs/direct_messages/CommentAction.java diff --git a/app/src/main/java/awais/instagrabber/activities/DirectMessageThread.java b/app/src/main/java/awais/instagrabber/activities/DirectMessageThread.java index 5162c986..ecdbddcf 100644 --- a/app/src/main/java/awais/instagrabber/activities/DirectMessageThread.java +++ b/app/src/main/java/awais/instagrabber/activities/DirectMessageThread.java @@ -24,6 +24,7 @@ import java.util.UUID; import awais.instagrabber.R; import awais.instagrabber.adapters.MessageItemsAdapter; +import awais.instagrabber.asyncs.direct_messages.CommentAction; import awais.instagrabber.asyncs.direct_messages.UserInboxFetcher; import awais.instagrabber.customviews.helpers.RecyclerLazyLoader; import awais.instagrabber.databinding.ActivityDmsBinding; @@ -209,90 +210,19 @@ public final class DirectMessageThread extends BaseLanguageActivity { Toast.makeText(getApplicationContext(), R.string.comment_send_empty_comment, Toast.LENGTH_SHORT).show(); 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.setOnTaskCompleteListener(result -> { + if (!result) { + 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(); } }; - public static class CommentAction extends AsyncTask { - private final String text; - private final String threadId; - - 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 { - final HttpURLConnection urlConnection2 = (HttpURLConnection) new URL(url2).openConnection(); - urlConnection2.setRequestMethod("POST"); - urlConnection2.setRequestProperty("User-Agent", Constants.I_USER_AGENT); - urlConnection2.setUseCaches(false); - 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(); - final String urlParameters2 = Utils.sign("{\"_csrftoken\":\"" + cookie.split("csrftoken=")[1].split(";")[0] - +"\",\"_uid\":\"" + Utils.getUserIdFromCookie(cookie) - +"\",\"__uuid\":\"" + settingsHelper.getString(Constants.DEVICE_UUID) - +"\",\"client_context\":\"" + cc - +"\",\"mutation_token\":\"" + cc - +"\",\"text\":\"" + commentText - +"\",\"thread_ids\":\"["+ threadId - +"]\",\"action\":\"send_item\"}"); - urlConnection2.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); - urlConnection2.setRequestProperty("Content-Length", "" + Integer.toString(urlParameters2.getBytes().length)); - urlConnection2.setDoOutput(true); - DataOutputStream wr2 = new DataOutputStream(urlConnection2.getOutputStream()); - wr2.writeBytes(urlParameters2); - wr2.flush(); - wr2.close(); - urlConnection2.connect(); - Log.d("austin_debug", urlConnection2.getResponseCode() + " " + urlParameters2 + " " + cookie); - if (urlConnection2.getResponseCode() == HttpURLConnection.HTTP_OK) { - ok = true; - } - urlConnection2.disconnect(); - } catch (Throwable ex) { - Log.e("austin_debug", "dm send: " + ex); - } - return ok; - } - - @Override - 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 diff --git a/app/src/main/java/awais/instagrabber/asyncs/direct_messages/CommentAction.java b/app/src/main/java/awais/instagrabber/asyncs/direct_messages/CommentAction.java new file mode 100644 index 00000000..6b6cc08c --- /dev/null +++ b/app/src/main/java/awais/instagrabber/asyncs/direct_messages/CommentAction.java @@ -0,0 +1,84 @@ +package awais.instagrabber.asyncs.direct_messages; + +import android.os.AsyncTask; +import android.util.Log; + +import java.io.DataOutputStream; +import java.net.HttpURLConnection; +import java.net.URL; +import java.net.URLEncoder; +import java.util.UUID; + +import awais.instagrabber.utils.Constants; +import awais.instagrabber.utils.Utils; + +import static awais.instagrabber.utils.Utils.settingsHelper; + +public class CommentAction extends AsyncTask { + private final String text; + private final String threadId; + + 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 { + final HttpURLConnection urlConnection2 = (HttpURLConnection) new URL(url2).openConnection(); + urlConnection2.setRequestMethod("POST"); + urlConnection2.setRequestProperty("User-Agent", Constants.I_USER_AGENT); + urlConnection2.setUseCaches(false); + 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(); + final String urlParameters2 = Utils.sign("{\"_csrftoken\":\"" + cookie.split("csrftoken=")[1].split(";")[0] + + "\",\"_uid\":\"" + Utils.getUserIdFromCookie(cookie) + + "\",\"__uuid\":\"" + settingsHelper.getString(Constants.DEVICE_UUID) + + "\",\"client_context\":\"" + cc + + "\",\"mutation_token\":\"" + cc + + "\",\"text\":\"" + commentText + + "\",\"thread_ids\":\"[" + threadId + + "]\",\"action\":\"send_item\"}"); + urlConnection2.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); + urlConnection2.setRequestProperty("Content-Length", "" + Integer.toString(urlParameters2.getBytes().length)); + urlConnection2.setDoOutput(true); + DataOutputStream wr2 = new DataOutputStream(urlConnection2.getOutputStream()); + wr2.writeBytes(urlParameters2); + wr2.flush(); + wr2.close(); + urlConnection2.connect(); + Log.d("austin_debug", urlConnection2.getResponseCode() + " " + urlParameters2 + " " + cookie); + if (urlConnection2.getResponseCode() == HttpURLConnection.HTTP_OK) { + ok = true; + } + urlConnection2.disconnect(); + } catch (Throwable ex) { + Log.e("austin_debug", "dm send: " + ex); + } + return ok; + } + + @Override + 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); + } +}