aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/java/ml/docilealligator/infinityforreddit
diff options
context:
space:
mode:
authorDocile-Alligator <25734209+Docile-Alligator@users.noreply.github.com>2024-01-12 01:59:43 +0000
committerDocile-Alligator <25734209+Docile-Alligator@users.noreply.github.com>2024-01-12 01:59:43 +0000
commit0f38b26710286f1df713386986b89e64d928572d (patch)
tree2b6b069285f0ad3d59568b6d0ab0930b71c93e37 /app/src/main/java/ml/docilealligator/infinityforreddit
parentaf6b92ffa3e28ef56ececa23fa30aef21aa41e98 (diff)
downloadinfinity-for-reddit-0f38b26710286f1df713386986b89e64d928572d.tar
infinity-for-reddit-0f38b26710286f1df713386986b89e64d928572d.tar.gz
infinity-for-reddit-0f38b26710286f1df713386986b89e64d928572d.tar.bz2
infinity-for-reddit-0f38b26710286f1df713386986b89e64d928572d.tar.lz
infinity-for-reddit-0f38b26710286f1df713386986b89e64d928572d.tar.xz
infinity-for-reddit-0f38b26710286f1df713386986b89e64d928572d.tar.zst
infinity-for-reddit-0f38b26710286f1df713386986b89e64d928572d.zip
Remove see removed posts and comments.
Diffstat (limited to 'app/src/main/java/ml/docilealligator/infinityforreddit')
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewPostDetailActivity.java9
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/adapters/CommentsRecyclerViewAdapter.java18
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/bottomsheetfragments/CommentMoreBottomSheetFragment.java14
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/comment/FetchRemovedComment.java131
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/comment/FetchRemovedCommentReveddit.java78
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/fragments/ViewPostDetailFragment.java65
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/post/FetchRemovedPost.java159
7 files changed, 0 insertions, 474 deletions
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewPostDetailActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewPostDetailActivity.java
index 1d0919d4..9bf59eac 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewPostDetailActivity.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewPostDetailActivity.java
@@ -428,15 +428,6 @@ public class ViewPostDetailActivity extends BaseActivity implements SortTypeSele
}
}
- public void showRemovedComment(Comment comment, int position) {
- if (sectionsPagerAdapter != null) {
- ViewPostDetailFragment fragment = sectionsPagerAdapter.getCurrentFragment();
- if (fragment != null) {
- fragment.showRemovedComment(comment, position);
- }
- }
- }
-
public void saveComment(@NonNull Comment comment, int position) {
if (comment.isSaved()) {
comment.setSaved(false);
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/adapters/CommentsRecyclerViewAdapter.java b/app/src/main/java/ml/docilealligator/infinityforreddit/adapters/CommentsRecyclerViewAdapter.java
index 4978bdbd..53bb5d57 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/adapters/CommentsRecyclerViewAdapter.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/adapters/CommentsRecyclerViewAdapter.java
@@ -1038,24 +1038,6 @@ public class CommentsRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVi
}
}
- public void editComment(Comment fetchedComment, Comment originalComment, int position) {
- if (position >= mVisibleComments.size() || !mVisibleComments.get(position).equals(originalComment)) {
- position = mVisibleComments.indexOf(originalComment);
- if (position < 0) {
- Toast.makeText(mActivity, R.string.show_removed_comment_failed, Toast.LENGTH_SHORT).show();
- return;
- }
- }
- mVisibleComments.get(position).setSubmittedByAuthor(originalComment.isSubmitter());
- mVisibleComments.get(position).setCommentMarkdown(fetchedComment.getCommentMarkdown());
-
- if (mIsSingleCommentThreadMode) {
- notifyItemChanged(position + 1);
- } else {
- notifyItemChanged(position);
- }
- }
-
public void deleteComment(int position) {
if (mVisibleComments != null && position >= 0 && position < mVisibleComments.size()) {
if (mVisibleComments.get(position).hasReply()) {
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/bottomsheetfragments/CommentMoreBottomSheetFragment.java b/app/src/main/java/ml/docilealligator/infinityforreddit/bottomsheetfragments/CommentMoreBottomSheetFragment.java
index 59345840..bd8b992f 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/bottomsheetfragments/CommentMoreBottomSheetFragment.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/bottomsheetfragments/CommentMoreBottomSheetFragment.java
@@ -171,20 +171,6 @@ public class CommentMoreBottomSheetFragment extends LandscapeExpandedRoundedBott
dismiss();
});
- if ("[deleted]".equals(comment.getAuthor()) ||
- "[deleted]".equals(comment.getCommentRawText()) ||
- "[removed]".equals(comment.getCommentRawText())
- ) {
- binding.seeRemovedViewCommentMoreBottomSheetFragment.setVisibility(View.VISIBLE);
-
- binding.seeRemovedViewCommentMoreBottomSheetFragment.setOnClickListener(view -> {
- dismiss();
- if (activity instanceof ViewPostDetailActivity) {
- ((ViewPostDetailActivity) activity).showRemovedComment(comment, bundle.getInt(EXTRA_POSITION));
- }
- });
- }
-
binding.addToCommentFilterViewCommentMoreBottomSheetFragment.setOnClickListener(view -> {
Intent intent = new Intent(activity, CommentFilterPreferenceActivity.class);
intent.putExtra(CommentFilterPreferenceActivity.EXTRA_COMMENT, comment);
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/comment/FetchRemovedComment.java b/app/src/main/java/ml/docilealligator/infinityforreddit/comment/FetchRemovedComment.java
deleted file mode 100644
index 24ab8d54..00000000
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/comment/FetchRemovedComment.java
+++ /dev/null
@@ -1,131 +0,0 @@
-package ml.docilealligator.infinityforreddit.comment;
-
-import android.os.Handler;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-
-import org.json.JSONArray;
-import org.json.JSONException;
-import org.json.JSONObject;
-
-import java.io.IOException;
-import java.util.concurrent.Executor;
-
-import ml.docilealligator.infinityforreddit.apis.PushshiftAPI;
-import ml.docilealligator.infinityforreddit.utils.JSONUtils;
-import ml.docilealligator.infinityforreddit.utils.Utils;
-import retrofit2.Response;
-import retrofit2.Retrofit;
-
-public class FetchRemovedComment {
-
- public static void fetchRemovedComment(Executor executor, Handler handler, Retrofit retrofit, Comment comment,
- FetchRemovedCommentListener listener) {
- executor.execute(() -> {
- try {
- Response<String> response = retrofit.create(PushshiftAPI.class).getRemovedComment(comment.getId()).execute();
- if (response.isSuccessful()) {
- Comment removedComment = parseComment(response.body(), comment);
- handler.post(() -> {
- if (removedComment != null) {
- listener.fetchSuccess(removedComment, comment);
- } else {
- listener.fetchFailed();
- }
- });
- } else {
- handler.post(listener::fetchFailed);
- }
- } catch (IOException e) {
- e.printStackTrace();
- handler.post(listener::fetchFailed);
- }
- });
- }
-
- // At the moment of writing this code, directly fetching a removed comment from
- // Pushift.io API returns an Internal Server Error, so we temporarily do it this way instead.
- // If this fails to return the removed comment, we try our luck with Reveddit API
- public static void searchRemovedComment(Executor executor, Handler handler, Retrofit retrofit, Comment comment,
- FetchRemovedCommentListener listener) {
- executor.execute(() -> {
- long after = (comment.getCommentTimeMillis() / 1000) - 1; // 1 second before comment creation epoch
- try {
- Response<String> response = retrofit.create(PushshiftAPI.class).searchComments(
- comment.getLinkId(),
- 1000,
- "id",
- "id,author,body,is_submitter",
- after,
- after + 43200, // 12 Hours later
- "*").execute();
- if (response.isSuccessful()) {
- Comment removedComment = parseComment(response.body(), comment);
- handler.post(() -> {
- if (removedComment != null) {
- listener.fetchSuccess(removedComment, comment);
- } else {
- listener.fetchFailed();
- }
- });
- } else {
- handler.post(listener::fetchFailed);
- }
- } catch (IOException e) {
- e.printStackTrace();
- handler.post(listener::fetchFailed);
- }
- });
- }
-
- @Nullable
- private static Comment parseComment(String responseBody, Comment comment) {
- try {
- JSONArray commentJSONArray = new JSONObject(responseBody).getJSONArray(JSONUtils.DATA_KEY);
- JSONObject commentFound = null;
- for (int i = 0; i < commentJSONArray.length(); i++) {
- JSONObject commentJSON = commentJSONArray.getJSONObject(i);
- if (!commentJSON.isNull("id") && commentJSON.getString("id").equals(comment.getId())) {
- commentFound = commentJSON;
- break;
- }
- }
- if (commentFound == null) {
- return null;
- }
-
- return parseRemovedComment(commentFound, comment);
- } catch (JSONException e) {
- e.printStackTrace();
- return null;
- }
- }
-
- @Nullable
- private static Comment parseRemovedComment(@NonNull JSONObject result, Comment comment) throws JSONException {
- String id = result.getString(JSONUtils.ID_KEY);
- String author = result.getString(JSONUtils.AUTHOR_KEY);
- String body = Utils.modifyMarkdown(Utils.trimTrailingWhitespace(result.optString(JSONUtils.BODY_KEY)));
- boolean isSubmitter = result.getBoolean(JSONUtils.IS_SUBMITTER_KEY);
-
- if (id.equals(comment.getId()) &&
- (!author.equals(comment.getAuthor()) ||
- !body.equals(comment.getCommentRawText()))
- ) {
- comment.setAuthor(author);
- comment.setCommentMarkdown(body);
- comment.setCommentRawText(body);
- comment.setSubmittedByAuthor(isSubmitter);
- return comment;
- } else {
- return null;
- }
- }
-
- public interface FetchRemovedCommentListener {
- void fetchSuccess(Comment fetchedComment, Comment originalComment);
-
- void fetchFailed();
- }
-}
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/comment/FetchRemovedCommentReveddit.java b/app/src/main/java/ml/docilealligator/infinityforreddit/comment/FetchRemovedCommentReveddit.java
deleted file mode 100644
index ec7beea8..00000000
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/comment/FetchRemovedCommentReveddit.java
+++ /dev/null
@@ -1,78 +0,0 @@
-package ml.docilealligator.infinityforreddit.comment;
-
-import android.os.Handler;
-
-import org.json.JSONException;
-import org.json.JSONObject;
-
-import java.io.IOException;
-import java.util.concurrent.Executor;
-
-import ml.docilealligator.infinityforreddit.apis.RevedditAPI;
-import ml.docilealligator.infinityforreddit.utils.APIUtils;
-import ml.docilealligator.infinityforreddit.utils.JSONUtils;
-import ml.docilealligator.infinityforreddit.utils.Utils;
-import retrofit2.Response;
-import retrofit2.Retrofit;
-
-public class FetchRemovedCommentReveddit {
-
- public static void fetchRemovedComment(Executor executor, Handler handler, Retrofit retrofit, Comment comment,
- long postCreatedUtc, int nComments, FetchRemovedCommentListener listener) {
- executor.execute(() -> {
- String parentIdWithoutPrefix = comment.getParentId().substring(3);
- String rootCommentId = parentIdWithoutPrefix.equals(comment.getLinkId()) ? comment.getId() : parentIdWithoutPrefix;
- try {
- Response<String> response = retrofit.create(RevedditAPI.class).getRemovedComments(
- APIUtils.getRevedditHeader(),
- comment.getLinkId(),
- (comment.getCommentTimeMillis() / 1000) - 1,
- rootCommentId,
- comment.getId(),
- nComments,
- postCreatedUtc / 1000,
- true).execute();
- if (response.isSuccessful()) {
- Comment removedComment = parseRemovedComment(new JSONObject(response.body()).getJSONObject(comment.getId()), comment);
- handler.post(() -> {
- if (removedComment != null) {
- listener.fetchSuccess(removedComment, comment);
- } else {
- listener.fetchFailed();
- }
- });
- } else {
- handler.post(listener::fetchFailed);
- }
- } catch (IOException | JSONException e) {
- e.printStackTrace();
- handler.post(listener::fetchFailed);
- }
- });
- }
-
- private static Comment parseRemovedComment(JSONObject result, Comment comment) throws JSONException {
- String id = result.getString(JSONUtils.ID_KEY);
- String author = result.getString(JSONUtils.AUTHOR_KEY);
- String body = Utils.modifyMarkdown(Utils.trimTrailingWhitespace(result.optString(JSONUtils.BODY_KEY)));
-
- if (id.equals(comment.getId()) && (!author.equals(comment.getAuthor()) || !body.equals(comment.getCommentRawText()))) {
- comment.setAuthor(author);
- comment.setCommentMarkdown(body);
- comment.setCommentRawText(body);
- if (result.has(JSONUtils.IS_SUBMITTER_KEY)) {
- // This doesn't seem to be present for the Reveddit API anymore...
- comment.setSubmittedByAuthor(result.getBoolean(JSONUtils.IS_SUBMITTER_KEY));
- }
- return comment;
- } else {
- return null;
- }
- }
-
- public interface FetchRemovedCommentListener {
- void fetchSuccess(Comment fetchedComment, Comment originalComment);
-
- void fetchFailed();
- }
-}
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/fragments/ViewPostDetailFragment.java b/app/src/main/java/ml/docilealligator/infinityforreddit/fragments/ViewPostDetailFragment.java
index 249364f0..4a712ee0 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/fragments/ViewPostDetailFragment.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/fragments/ViewPostDetailFragment.java
@@ -91,8 +91,6 @@ import ml.docilealligator.infinityforreddit.bottomsheetfragments.FlairBottomShee
import ml.docilealligator.infinityforreddit.bottomsheetfragments.PostCommentSortTypeBottomSheetFragment;
import ml.docilealligator.infinityforreddit.comment.Comment;
import ml.docilealligator.infinityforreddit.comment.FetchComment;
-import ml.docilealligator.infinityforreddit.comment.FetchRemovedComment;
-import ml.docilealligator.infinityforreddit.comment.FetchRemovedCommentReveddit;
import ml.docilealligator.infinityforreddit.comment.ParseComment;
import ml.docilealligator.infinityforreddit.commentfilter.CommentFilter;
import ml.docilealligator.infinityforreddit.commentfilter.FetchCommentFilter;
@@ -107,7 +105,6 @@ import ml.docilealligator.infinityforreddit.events.PostUpdateEventToPostDetailFr
import ml.docilealligator.infinityforreddit.events.PostUpdateEventToPostList;
import ml.docilealligator.infinityforreddit.message.ReadMessage;
import ml.docilealligator.infinityforreddit.post.FetchPost;
-import ml.docilealligator.infinityforreddit.post.FetchRemovedPost;
import ml.docilealligator.infinityforreddit.post.HidePost;
import ml.docilealligator.infinityforreddit.post.ParsePost;
import ml.docilealligator.infinityforreddit.post.Post;
@@ -726,13 +723,6 @@ public class ViewPostDetailFragment extends Fragment implements FragmentCommunic
}
mMenu.findItem(R.id.action_view_crosspost_parent_view_post_detail_fragment).setVisible(mPost.getCrosspostParentId() != null);
-
- if ("[deleted]".equals(mPost.getAuthor()) ||
- "[deleted]".equals(mPost.getSelfText()) ||
- "[removed]".equals(mPost.getSelfText())
- ) {
- mMenu.findItem(R.id.action_see_removed_view_post_detail_fragment).setVisible(true);
- }
}
}
@@ -1138,9 +1128,6 @@ public class ViewPostDetailFragment extends Fragment implements FragmentCommunic
intent.putExtra(ReportActivity.EXTRA_THING_FULLNAME, mPost.getFullName());
startActivity(intent);
return true;
- } else if (itemId == R.id.action_see_removed_view_post_detail_fragment) {
- showRemovedPost();
- return true;
} else if (itemId == R.id.action_crosspost_view_post_detail_fragment) {
Intent submitCrosspostIntent = new Intent(activity, SubmitCrosspostActivity.class);
submitCrosspostIntent.putExtra(SubmitCrosspostActivity.EXTRA_POST, mPost);
@@ -1821,36 +1808,6 @@ public class ViewPostDetailFragment extends Fragment implements FragmentCommunic
.show();
}
- public void showRemovedComment(Comment comment, int position) {
- Toast.makeText(activity, R.string.fetching_removed_comment, Toast.LENGTH_SHORT).show();
- FetchRemovedComment.fetchRemovedComment(
- mExecutor, new Handler(), pushshiftRetrofit, comment,
- new FetchRemovedComment.FetchRemovedCommentListener() {
- @Override
- public void fetchSuccess(Comment fetchedComment, Comment originalComment) {
- mCommentsAdapter.editComment(fetchedComment, originalComment, position);
- }
-
- @Override
- public void fetchFailed() {
- // Reveddit fallback
- FetchRemovedCommentReveddit.fetchRemovedComment(mExecutor, new Handler(), revedditRetrofit,
- comment, mPost.getPostTimeMillis(), mPost.getNComments(),
- new FetchRemovedCommentReveddit.FetchRemovedCommentListener() {
- @Override
- public void fetchSuccess(Comment fetchedComment, Comment originalComment) {
- mCommentsAdapter.editComment(fetchedComment, originalComment, position);
- }
-
- @Override
- public void fetchFailed() {
- Toast.makeText(activity, R.string.show_removed_comment_failed, Toast.LENGTH_SHORT).show();
- }
- });
- }
- });
- }
-
public void changeToNormalThreadMode() {
isSingleCommentThreadMode = false;
mSingleCommentId = null;
@@ -1892,28 +1849,6 @@ public class ViewPostDetailFragment extends Fragment implements FragmentCommunic
TransitionManager.beginDelayedTransition((mCommentsRecyclerView == null ? mRecyclerView : mCommentsRecyclerView), new AutoTransition());
}
- public void showRemovedPost() {
- Toast.makeText(activity, R.string.fetching_removed_post, Toast.LENGTH_SHORT).show();
- FetchRemovedPost.fetchRemovedPost(
- pushshiftRetrofit,
- mPost,
- new FetchRemovedPost.FetchRemovedPostListener() {
- @Override
- public void fetchSuccess(Post post) {
- mPost = post;
- tryMarkingPostAsRead();
- if (mPostAdapter != null) {
- mPostAdapter.updatePost(post);
- }
- }
-
- @Override
- public void fetchFailed() {
- Toast.makeText(activity, R.string.show_removed_post_failed, Toast.LENGTH_SHORT).show();
- }
- });
- }
-
public boolean getIsNsfwSubreddit() {
if (activity != null) {
return activity.isNsfwSubreddit();
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/post/FetchRemovedPost.java b/app/src/main/java/ml/docilealligator/infinityforreddit/post/FetchRemovedPost.java
deleted file mode 100644
index 5d815e83..00000000
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/post/FetchRemovedPost.java
+++ /dev/null
@@ -1,159 +0,0 @@
-package ml.docilealligator.infinityforreddit.post;
-
-import android.net.Uri;
-import android.os.AsyncTask;
-import android.text.Html;
-
-import androidx.annotation.NonNull;
-
-import org.json.JSONException;
-import org.json.JSONObject;
-
-import java.util.ArrayList;
-
-import ml.docilealligator.infinityforreddit.apis.PushshiftAPI;
-import ml.docilealligator.infinityforreddit.utils.JSONUtils;
-import ml.docilealligator.infinityforreddit.utils.Utils;
-import retrofit2.Call;
-import retrofit2.Callback;
-import retrofit2.Response;
-import retrofit2.Retrofit;
-
-public class FetchRemovedPost {
-
- public static void fetchRemovedPost(Retrofit retrofit, Post post, FetchRemovedPostListener listener) {
- retrofit.create(PushshiftAPI.class).getRemovedPost(post.getId())
- .enqueue(new Callback<String>() {
- @Override
- public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) {
- if (response.isSuccessful()) {
- new ParsePostAsyncTask(response.body(), post, listener).execute();
- } else {
- listener.fetchFailed();
- }
- }
-
- @Override
- public void onFailure(@NonNull Call<String> call, @NonNull Throwable t) {
- t.printStackTrace();
- listener.fetchFailed();
- }
- });
- }
-
- private static Post parseRemovedPost(JSONObject result, Post post) throws JSONException {
- String id = result.getString(JSONUtils.ID_KEY);
- String author = result.getString(JSONUtils.AUTHOR_KEY);
- String title = result.getString(JSONUtils.TITLE_KEY);
- String body = Utils.modifyMarkdown(Utils.trimTrailingWhitespace(result.getString(JSONUtils.SELFTEXT_KEY)));
-
- if ( id.equals(post.getId()) &&
- (!author.equals(post.getAuthor()) ||
- foundSelfText(post.getSelfText(), body))
- ) {
- post.setAuthor(author);
- post.setTitle(title);
- post.setSelfText(body);
- post.setSelfTextPlain("");
- post.setSelfTextPlainTrimmed("");
-
- String url = result.optString(JSONUtils.URL_KEY);
-
- if (url.endsWith("gif") || url.endsWith("mp4")) {
- post.setVideoUrl(url);
- post.setVideoDownloadUrl(url);
- } else if (post.getPostType() == Post.VIDEO_TYPE || post.getPostType() == Post.GIF_TYPE) {
- JSONObject redditVideoObject = result.getJSONObject("secure_media").getJSONObject(JSONUtils.REDDIT_VIDEO_KEY);
- String videoUrl = Html.fromHtml(redditVideoObject.getString(JSONUtils.HLS_URL_KEY)).toString();
- String videoDownloadUrl = redditVideoObject.getString(JSONUtils.FALLBACK_URL_KEY);
-
- post.setVideoUrl(videoUrl);
- post.setVideoDownloadUrl(videoDownloadUrl);
- } else if (post.getPostType() == Post.LINK_TYPE) {
- post.setUrl(url);
- }
-
- if (post.getPostType() == Post.VIDEO_TYPE) {
- try {
- Uri uri = Uri.parse(url);
- String authority = uri.getAuthority();
- if (authority != null && authority.contains("redgifs.com")) {
- post.setPostType(Post.LINK_TYPE);
- post.setUrl(url);
- }
- } catch (IllegalArgumentException ignore) {
- }
- }
-
- if (!result.isNull("thumbnail")) {
- ArrayList<Post.Preview> previews = post.getPreviews();
- if (previews != null && !previews.isEmpty()) {
- if (previews.size() >= 2) {
- Post.Preview preview = previews.get(1);
- preview.setPreviewUrl(result.getString("thumbnail"));
- previews.set(1, preview);
- } else {
- Post.Preview preview = previews.get(0);
- preview.setPreviewUrl(result.getString("thumbnail"));
- previews.set(0, preview);
- }
- } else {
- Post.Preview preview = new Post.Preview(result.getString("thumbnail"), 1, 1, "", "");
- preview.setPreviewUrl(result.getString("thumbnail"));
- ArrayList<Post.Preview> newPreviews = new ArrayList<>();
- newPreviews.add(preview);
- post.setPreviews(newPreviews);
- }
- }
-
- return post;
- } else {
- return null;
- }
- }
-
- private static boolean foundSelfText(String oldText, String newText) {
- return !(newText.equals("[deleted]") || newText.equals("[removed]")) &&
- !newText.equals(oldText);
- }
-
- public interface FetchRemovedPostListener {
- void fetchSuccess(Post post);
-
- void fetchFailed();
- }
-
- private static class ParsePostAsyncTask extends AsyncTask<Void, Void, Void> {
-
- private final String responseBody;
- private final FetchRemovedPostListener listener;
- Post post;
-
- public ParsePostAsyncTask(String responseBody, Post post, FetchRemovedPostListener listener) {
- this.responseBody = responseBody;
- this.post = post;
- this.listener = listener;
- }
-
- @Override
- protected Void doInBackground(Void... voids) {
- try {
- JSONObject postJson = new JSONObject(responseBody).getJSONArray(JSONUtils.DATA_KEY).getJSONObject(0);
- post = parseRemovedPost(postJson, post);
- } catch (JSONException e) {
- e.printStackTrace();
- post = null;
- }
- return null;
- }
-
- @Override
- protected void onPostExecute(Void aVoid) {
- super.onPostExecute(aVoid);
- if (post != null)
- listener.fetchSuccess(post);
- else
- listener.fetchFailed();
- }
- }
-}