From 5dbe271b2cd4ce479e9d6d8d7b6a1c36409328bf Mon Sep 17 00:00:00 2001 From: Alex Ning Date: Sun, 8 Sep 2019 16:08:39 +0800 Subject: [PATCH] Hiding and unhiding posts are now available. --- .idea/caches/build_file_checksums.ser | Bin 533 -> 533 bytes .idea/caches/gradle_models.ser | Bin 309041 -> 309041 bytes app/build.gradle | 4 +- .../infinityforreddit/HidePost.java | 60 ++++++++++++ .../infinityforreddit/JSONUtils.java | 1 + .../infinityforreddit/ParsePost.java | 72 ++++++++------- .../infinityforreddit/Post.java | 27 ++++-- .../infinityforreddit/PostFragment.java | 1 + .../infinityforreddit/RedditAPI.java | 8 ++ .../ViewPostDetailActivity.java | 87 +++++++++++++++++- .../res/menu/view_post_detail_activity.xml | 24 +++-- app/src/main/res/values/strings.xml | 6 ++ 12 files changed, 240 insertions(+), 50 deletions(-) create mode 100644 app/src/main/java/ml/docilealligator/infinityforreddit/HidePost.java diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser index b366bf4e4102298766fef5109db278b744c6ea1b..278bd13e58c7a8f0b1326255d751b65665837f21 100644 GIT binary patch delta 33 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 QmA|UKSyeSjW7akO1)niLQ2+n{ diff --git a/app/build.gradle b/app/build.gradle index 1e7a6afe..d76d3708 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -6,8 +6,8 @@ android { applicationId "ml.docilealligator.infinityforreddit" minSdkVersion 21 targetSdkVersion 29 - versionCode 2 - versionName "1.0.1" + versionCode 3 + versionName "1.0.2" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } buildTypes { diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/HidePost.java b/app/src/main/java/ml/docilealligator/infinityforreddit/HidePost.java new file mode 100644 index 00000000..ec6770d2 --- /dev/null +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/HidePost.java @@ -0,0 +1,60 @@ +package ml.docilealligator.infinityforreddit; + +import androidx.annotation.NonNull; + +import java.util.HashMap; +import java.util.Map; + +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; +import retrofit2.Retrofit; + +class HidePost { + interface HidePostListener { + void success(); + void failed(); + } + + static void hidePost(Retrofit oauthRetrofit, String accessToken, String fullname, + HidePostListener hidePostListener) { + Map params = new HashMap<>(); + params.put(RedditUtils.ID_KEY, fullname); + oauthRetrofit.create(RedditAPI.class).hide(RedditUtils.getOAuthHeader(accessToken), params).enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + if(response.isSuccessful()) { + hidePostListener.success(); + } else { + hidePostListener.failed(); + } + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + hidePostListener.failed(); + } + }); + } + + static void unhidePost(Retrofit oauthRetrofit, String accessToken, String fullname, + HidePostListener hidePostListener) { + Map params = new HashMap<>(); + params.put(RedditUtils.ID_KEY, fullname); + oauthRetrofit.create(RedditAPI.class).unhide(RedditUtils.getOAuthHeader(accessToken), params).enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + if(response.isSuccessful()) { + hidePostListener.success(); + } else { + hidePostListener.failed(); + } + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + hidePostListener.failed(); + } + }); + } +} diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/JSONUtils.java b/app/src/main/java/ml/docilealligator/infinityforreddit/JSONUtils.java index 91d67096..4346ccbe 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/JSONUtils.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/JSONUtils.java @@ -84,4 +84,5 @@ public class JSONUtils { static final String WAS_COMMENT_KEY = "was_comment"; static final String NEW_KEY = "new"; static final String NUM_COMMENTS_KEY = "num_comments"; + static final String HIDDEN_KEY = "hidden"; } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/ParsePost.java b/app/src/main/java/ml/docilealligator/infinityforreddit/ParsePost.java index 1cae9ee3..efe58ff0 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/ParsePost.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/ParsePost.java @@ -163,6 +163,7 @@ class ParsePost { int score = data.getInt(JSONUtils.SCORE_KEY); int voteType; int gilded = data.getInt(JSONUtils.GILDED_KEY); + boolean hidden = data.getBoolean(JSONUtils.HIDDEN_KEY); boolean spoiler = data.getBoolean(JSONUtils.SPOILER_KEY); boolean nsfw = data.getBoolean(JSONUtils.NSFW_KEY); boolean stickied = data.getBoolean(JSONUtils.STICKIED_KEY); @@ -204,15 +205,15 @@ class ParsePost { Post crosspostParent = parseBasicData(data, locale); Post post = parseData(data, permalink, id, fullName, subredditName, subredditNamePrefixed, author, formattedPostTime, title, previewUrl, previewWidth, previewHeight, - score, voteType, gilded, flair, spoiler, nsfw, stickied, archived, locked, saved, - true); + score, voteType, gilded, flair, hidden, spoiler, nsfw, stickied, archived, locked, + saved, true); post.setCrosspostParentId(crosspostParent.getId()); return post; } else { return parseData(data, permalink, id, fullName, subredditName, subredditNamePrefixed, author, formattedPostTime, title, previewUrl, previewWidth, previewHeight, - score, voteType, gilded, flair, spoiler, nsfw, stickied, archived, locked, saved, - false); + score, voteType, gilded, flair, hidden, spoiler, nsfw, stickied, archived, locked, + saved, false); } } @@ -220,8 +221,8 @@ class ParsePost { String subredditName, String subredditNamePrefixed, String author, String formattedPostTime, String title, String previewUrl, int previewWidth, int previewHeight, int score, int voteType, int gilded, String flair, - boolean spoiler, boolean nsfw, boolean stickied, boolean archived, - boolean locked, boolean saved, boolean isCrosspost) throws JSONException { + boolean hidden, boolean spoiler, boolean nsfw, boolean stickied, + boolean archived, boolean locked, boolean saved, boolean isCrosspost) throws JSONException { Post post; boolean isVideo = data.getBoolean(JSONUtils.IS_VIDEO_KEY); @@ -232,7 +233,7 @@ class ParsePost { //Text post int postType = Post.TEXT_TYPE; post = new Post(id, fullName, subredditName, subredditNamePrefixed, author, formattedPostTime, - title, permalink, score, postType, voteType, gilded, flair, spoiler, nsfw, + title, permalink, score, postType, voteType, gilded, flair, hidden, spoiler, nsfw, stickied, archived, locked, saved, isCrosspost); if(data.isNull(JSONUtils.SELFTEXT_KEY)) { post.setSelfText(""); @@ -243,8 +244,8 @@ class ParsePost { //No preview link post int postType = Post.NO_PREVIEW_LINK_TYPE; post = new Post(id, fullName, subredditName, subredditNamePrefixed, author, formattedPostTime, - title, previewUrl, url, permalink, score, postType, - voteType, gilded, flair, spoiler, nsfw, stickied, archived, locked, saved, isCrosspost); + title, previewUrl, url, permalink, score, postType, voteType, gilded, flair, + hidden, spoiler, nsfw, stickied, archived, locked, saved, isCrosspost); if(data.isNull(JSONUtils.SELFTEXT_KEY)) { post.setSelfText(""); } else { @@ -264,8 +265,8 @@ class ParsePost { String videoUrl = Html.fromHtml(redditVideoObject.getString(JSONUtils.DASH_URL_KEY)).toString(); post = new Post(id, fullName, subredditName, subredditNamePrefixed, author, formattedPostTime, - title, previewUrl, permalink, score, postType, voteType, - gilded, flair, spoiler, nsfw, stickied, archived, locked, saved, isCrosspost, true); + title, previewUrl, permalink, score, postType, voteType, gilded, flair, hidden, + spoiler, nsfw, stickied, archived, locked, saved, isCrosspost, true); post.setPreviewWidth(previewWidth); post.setPreviewHeight(previewHeight); @@ -279,9 +280,10 @@ class ParsePost { String videoUrl = Html.fromHtml(variations.getJSONObject(JSONUtils.VARIANTS_KEY).getJSONObject(JSONUtils.MP4_KEY).getJSONObject(JSONUtils.SOURCE_KEY).getString(JSONUtils.URL_KEY)).toString(); String gifDownloadUrl = Html.fromHtml(variations.getJSONObject(JSONUtils.VARIANTS_KEY).getJSONObject(JSONUtils.GIF_KEY).getJSONObject(JSONUtils.SOURCE_KEY).getString(JSONUtils.URL_KEY)).toString(); - post = new Post(id, fullName, subredditName, subredditNamePrefixed, author, formattedPostTime, title, - previewUrl, permalink, score, postType, voteType, - gilded, flair, spoiler, nsfw, stickied, archived, locked, saved, isCrosspost, false); + post = new Post(id, fullName, subredditName, subredditNamePrefixed, author, + formattedPostTime, title, previewUrl, permalink, score, postType, voteType, + gilded, flair, hidden, spoiler, nsfw, stickied, archived, locked, saved, + isCrosspost, false); post.setPreviewWidth(previewWidth); post.setPreviewHeight(previewHeight); post.setVideoUrl(videoUrl); @@ -293,9 +295,10 @@ class ParsePost { String videoUrl = Html.fromHtml(data.getJSONObject(JSONUtils.PREVIEW_KEY) .getJSONObject(JSONUtils.REDDIT_VIDEO_PREVIEW_KEY).getString(JSONUtils.DASH_URL_KEY)).toString(); - post = new Post(id, fullName, subredditName, subredditNamePrefixed, author, formattedPostTime, title, - previewUrl, permalink, score, postType, voteType, - gilded, flair, spoiler, nsfw, stickied, archived, locked, saved, isCrosspost, true); + post = new Post(id, fullName, subredditName, subredditNamePrefixed, author, + formattedPostTime, title, previewUrl, permalink, score, postType, voteType, + gilded, flair, hidden, spoiler, nsfw, stickied, archived, locked, saved, + isCrosspost, true); post.setPreviewWidth(previewWidth); post.setPreviewHeight(previewHeight); post.setVideoUrl(videoUrl); @@ -305,9 +308,10 @@ class ParsePost { //Image post int postType = Post.IMAGE_TYPE; - post = new Post(id, fullName, subredditName, subredditNamePrefixed, author, formattedPostTime, - title, url, url, permalink, score, postType, - voteType, gilded, flair, spoiler, nsfw, stickied, archived, locked, saved, isCrosspost); + post = new Post(id, fullName, subredditName, subredditNamePrefixed, author, + formattedPostTime, title, url, url, permalink, score, postType, + voteType, gilded, flair, hidden, spoiler, nsfw, stickied, archived, + locked, saved, isCrosspost); post.setPreviewWidth(previewWidth); post.setPreviewHeight(previewHeight); @@ -316,9 +320,10 @@ class ParsePost { //Text post but with a preview int postType = Post.TEXT_TYPE; - post = new Post(id, fullName, subredditName, subredditNamePrefixed, author, formattedPostTime, - title, permalink, score, postType, voteType, gilded, flair, spoiler, - nsfw, stickied, archived, locked, saved, isCrosspost); + post = new Post(id, fullName, subredditName, subredditNamePrefixed, author, + formattedPostTime, title, permalink, score, postType, voteType, + gilded, flair, hidden, spoiler, nsfw, stickied, archived, locked, + saved, isCrosspost); post.setPreviewWidth(previewWidth); post.setPreviewHeight(previewHeight); @@ -332,9 +337,10 @@ class ParsePost { //Link post int postType = Post.LINK_TYPE; - post = new Post(id, fullName, subredditName, subredditNamePrefixed, author, formattedPostTime, - title, previewUrl, url, permalink, score, postType, voteType, gilded, - flair, spoiler, nsfw, stickied, archived, locked, saved, isCrosspost); + post = new Post(id, fullName, subredditName, subredditNamePrefixed, author, + formattedPostTime, title, previewUrl, url, permalink, score, postType, + voteType, gilded, flair, hidden, spoiler, nsfw, stickied, archived, + locked, saved, isCrosspost); if(data.isNull(JSONUtils.SELFTEXT_KEY)) { post.setSelfText(""); } else { @@ -351,18 +357,20 @@ class ParsePost { //Image post int postType = Post.IMAGE_TYPE; - post = new Post(id, fullName, subredditName, subredditNamePrefixed, author, formattedPostTime, - title, previewUrl, url, permalink, score, postType, - voteType, gilded, flair, spoiler, nsfw, stickied, archived, locked, saved, isCrosspost); + post = new Post(id, fullName, subredditName, subredditNamePrefixed, author, + formattedPostTime, title, previewUrl, url, permalink, score, postType, + voteType, gilded, flair, hidden, spoiler, nsfw, stickied, archived, + locked, saved, isCrosspost); post.setPreviewWidth(previewWidth); post.setPreviewHeight(previewHeight); } else { //CP No Preview Link post int postType = Post.NO_PREVIEW_LINK_TYPE; - post = new Post(id, fullName, subredditName, subredditNamePrefixed, author, formattedPostTime, title, - url, url, permalink, score, postType, voteType, - gilded, flair, spoiler, nsfw, stickied, archived, locked, saved, isCrosspost); + post = new Post(id, fullName, subredditName, subredditNamePrefixed, author, + formattedPostTime, title, url, url, permalink, score, postType, voteType, + gilded, flair, hidden, spoiler, nsfw, stickied, archived, locked, saved, + isCrosspost); } } } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/Post.java b/app/src/main/java/ml/docilealligator/infinityforreddit/Post.java index 9a5371c2..8d9fd436 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/Post.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/Post.java @@ -39,6 +39,7 @@ class Post implements Parcelable { private int gilded; private int previewWidth; private int previewHeight; + private boolean hidden; private boolean spoiler; private boolean nsfw; private boolean stickied; @@ -52,8 +53,9 @@ class Post implements Parcelable { Post(String id, String fullName, String subredditName, String subredditNamePrefixed, String author, String postTime, String title, String previewUrl, String permalink, int score, int postType, - int voteType, int gilded, String flair, boolean spoiler, boolean nsfw, boolean stickied, - boolean archived, boolean locked, boolean saved, boolean isCrosspost, boolean isDashVideo) { + int voteType, int gilded, String flair, boolean hidden, boolean spoiler, boolean nsfw, + boolean stickied, boolean archived, boolean locked, boolean saved, boolean isCrosspost, + boolean isDashVideo) { this.id = id; this.fullName = fullName; this.subredditName = subredditName; @@ -69,6 +71,7 @@ class Post implements Parcelable { this.voteType = voteType; this.gilded = gilded; this.flair = flair; + this.hidden = hidden; this.spoiler = spoiler; this.nsfw = nsfw; this.stickied = stickied; @@ -81,8 +84,8 @@ class Post implements Parcelable { Post(String id, String fullName, String subredditName, String subredditNamePrefixed, String author, String postTime, String title, String previewUrl, String url, String permalink, int score, - int postType, int voteType, int gilded, String flair, boolean spoiler, boolean nsfw, boolean stickied, - boolean archived, boolean locked, boolean saved, boolean isCrosspost) { + int postType, int voteType, int gilded, String flair, boolean hidden, boolean spoiler, + boolean nsfw, boolean stickied, boolean archived, boolean locked, boolean saved, boolean isCrosspost) { this.id = id; this.fullName = fullName; this.subredditName = subredditName; @@ -99,6 +102,7 @@ class Post implements Parcelable { this.voteType = voteType; this.gilded = gilded; this.flair = flair; + this.hidden = hidden; this.spoiler = spoiler; this.nsfw = nsfw; this.stickied = stickied; @@ -110,8 +114,8 @@ class Post implements Parcelable { Post(String id, String fullName, String subredditName, String subredditNamePrefixed, String author, String postTime, String title, String permalink, int score, int postType, int voteType, int gilded, - String flair, boolean spoiler, boolean nsfw, boolean stickied, boolean archived, boolean locked, - boolean saved, boolean isCrosspost) { + String flair, boolean hidden, boolean spoiler, boolean nsfw, boolean stickied, boolean archived, + boolean locked, boolean saved, boolean isCrosspost) { this.id = id; this.fullName = fullName; this.subredditName = subredditName; @@ -126,6 +130,7 @@ class Post implements Parcelable { this.voteType = voteType; this.gilded = gilded; this.flair = flair; + this.hidden = hidden; this.spoiler = spoiler; this.nsfw = nsfw; this.stickied = stickied; @@ -159,6 +164,7 @@ class Post implements Parcelable { gilded = in.readInt(); previewWidth = in.readInt(); previewHeight = in.readInt(); + hidden = in.readByte() != 0; spoiler = in.readByte() != 0; nsfw = in.readByte() != 0; stickied = in.readByte() != 0; @@ -319,6 +325,14 @@ class Post implements Parcelable { return previewHeight; } + boolean isHidden() { + return hidden; + } + + void setHidden(boolean hidden) { + this.hidden = hidden; + } + boolean isSpoiler() { return spoiler; } @@ -409,6 +423,7 @@ class Post implements Parcelable { parcel.writeInt(gilded); parcel.writeInt(previewWidth); parcel.writeInt(previewHeight); + parcel.writeByte((byte) (hidden ? 1 : 0)); parcel.writeByte((byte) (spoiler ? 1 : 0)); parcel.writeByte((byte) (nsfw ? 1 : 0)); parcel.writeByte((byte) (stickied ? 1 : 0)); diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/PostFragment.java b/app/src/main/java/ml/docilealligator/infinityforreddit/PostFragment.java index e6e6fb12..2bb47053 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/PostFragment.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/PostFragment.java @@ -544,6 +544,7 @@ public class PostFragment extends Fragment implements FragmentCommunicator { post.setVoteType(event.post.getVoteType()); post.setScore(event.post.getScore()); post.setNSFW(event.post.isNSFW()); + post.setHidden(event.post.isHidden()); post.setSpoiler(event.post.isSpoiler()); post.setFlair(event.post.getFlair()); post.setSaved(event.post.isSaved()); diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/RedditAPI.java b/app/src/main/java/ml/docilealligator/infinityforreddit/RedditAPI.java index e4838897..55904d2b 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/RedditAPI.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/RedditAPI.java @@ -176,4 +176,12 @@ public interface RedditAPI { @FormUrlEncoded @POST("/api/unsave") Call unsave(@HeaderMap Map headers, @FieldMap Map params); + + @FormUrlEncoded + @POST("/api/hide") + Call hide(@HeaderMap Map headers, @FieldMap Map params); + + @FormUrlEncoded + @POST("/api/unhide") + Call unhide(@HeaderMap Map headers, @FieldMap Map params); } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/ViewPostDetailActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/ViewPostDetailActivity.java index 06487bcb..42a63247 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/ViewPostDetailActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/ViewPostDetailActivity.java @@ -304,6 +304,7 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo } else { if(mMenu != null) { MenuItem saveItem = mMenu.findItem(R.id.action_save_view_post_detail_activity); + MenuItem hideItem = mMenu.findItem(R.id.action_hide_view_post_detail_activity); if(mAccessToken != null) { if(mPost.isSaved()) { saveItem.setVisible(true); @@ -312,8 +313,17 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo saveItem.setVisible(true); saveItem.setIcon(R.drawable.ic_baseline_bookmark_border_24px); } + + if(mPost.isHidden()) { + hideItem.setVisible(true); + hideItem.setTitle(R.string.action_unhide_post); + } else { + hideItem.setVisible(true); + hideItem.setTitle(R.string.action_hide_post); + } } else { saveItem.setVisible(false); + hideItem.setVisible(false); } if(mPost.getAuthor().equals(mAccountName)) { @@ -420,6 +430,7 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo if(mMenu != null) { MenuItem saveItem = mMenu.findItem(R.id.action_save_view_post_detail_activity); + MenuItem hideItem = mMenu.findItem(R.id.action_hide_view_post_detail_activity); if(mAccessToken != null) { if(post.isSaved()) { saveItem.setVisible(true); @@ -428,8 +439,17 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo saveItem.setVisible(true); saveItem.setIcon(R.drawable.ic_baseline_bookmark_border_24px); } + + if(post.isHidden()) { + hideItem.setVisible(true); + hideItem.setTitle(R.string.action_unhide_post); + } else { + hideItem.setVisible(true); + hideItem.setTitle(R.string.action_hide_post); + } } else { saveItem.setVisible(false); + hideItem.setVisible(false); } if(mPost.getAuthor().equals(mAccountName)) { @@ -630,6 +650,7 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo isRefreshing = false; if(mMenu != null) { MenuItem saveItem = mMenu.findItem(R.id.action_save_view_post_detail_activity); + MenuItem hideItem = mMenu.findItem(R.id.action_hide_view_post_detail_activity); if(mAccessToken != null) { if(post.isSaved()) { saveItem.setVisible(true); @@ -638,8 +659,17 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo saveItem.setVisible(true); saveItem.setIcon(R.drawable.ic_baseline_bookmark_border_24px); } + + if(post.isHidden()) { + hideItem.setVisible(true); + hideItem.setTitle(R.string.action_unhide_post); + } else { + hideItem.setVisible(true); + hideItem.setTitle(R.string.action_hide_post); + } } else { saveItem.setVisible(false); + hideItem.setVisible(false); } mMenu.findItem(R.id.action_view_crosspost_parent_view_post_detail_activity).setVisible(mPost.getCrosspostParentId() != null); @@ -668,7 +698,7 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo if(showToast) { Toast.makeText(ViewPostDetailActivity.this, resId, Toast.LENGTH_SHORT).show(); } else { - Snackbar.make(mCoordinatorLayout, resId, Snackbar.LENGTH_SHORT); + Snackbar.make(mCoordinatorLayout, resId, Snackbar.LENGTH_SHORT).show(); } } @@ -872,6 +902,7 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo mMenu = menu; if(mPost != null) { MenuItem saveItem = mMenu.findItem(R.id.action_save_view_post_detail_activity); + MenuItem hideItem = mMenu.findItem(R.id.action_hide_view_post_detail_activity); if(mAccessToken != null) { if(mPost.isSaved()) { saveItem.setVisible(true); @@ -880,8 +911,17 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo saveItem.setVisible(true); saveItem.setIcon(R.drawable.ic_baseline_bookmark_border_24px); } + + if(mPost.isHidden()) { + hideItem.setVisible(true); + hideItem.setTitle(R.string.action_unhide_post); + } else { + hideItem.setVisible(true); + hideItem.setTitle(R.string.action_hide_post); + } } else { saveItem.setVisible(false); + hideItem.setVisible(false); } if(mPost.getAuthor().equals(mAccountName)) { @@ -993,6 +1033,51 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo crosspostIntent.putExtra(ViewPostDetailActivity.EXTRA_POST_ID, mPost.getCrosspostParentId()); startActivity(crosspostIntent); return true; + case R.id.action_hide_view_post_detail_activity: + if(mPost != null && mAccessToken != null) { + if(mPost.isHidden()) { + item.setTitle(R.string.action_hide_post); + + HidePost.unhidePost(mOauthRetrofit, mAccessToken, mPost.getFullName(), new HidePost.HidePostListener() { + @Override + public void success() { + mPost.setHidden(false); + item.setTitle(R.string.action_hide_post); + showMessage(R.string.post_unhide_success); + EventBus.getDefault().post(new PostUpdateEventToPostList(mPost, postListPosition)); + } + + @Override + public void failed() { + mPost.setHidden(true); + item.setTitle(R.string.action_unhide_post); + showMessage(R.string.post_unhide_failed); + EventBus.getDefault().post(new PostUpdateEventToPostList(mPost, postListPosition)); + } + }); + } else { + item.setTitle(R.string.action_unhide_post); + + HidePost.hidePost(mOauthRetrofit, mAccessToken, mPost.getFullName(), new HidePost.HidePostListener() { + @Override + public void success() { + mPost.setHidden(true); + item.setTitle(R.string.action_unhide_post); + showMessage(R.string.post_hide_success); + EventBus.getDefault().post(new PostUpdateEventToPostList(mPost, postListPosition)); + } + + @Override + public void failed() { + mPost.setHidden(false); + item.setTitle(R.string.action_hide_post); + showMessage(R.string.post_hide_failed); + EventBus.getDefault().post(new PostUpdateEventToPostList(mPost, postListPosition)); + } + }); + } + } + return true; case R.id.action_edit_view_post_detail_activity: Intent editPostItent = new Intent(this, EditPostActivity.class); editPostItent.putExtra(EditPostActivity.EXTRA_ACCESS_TOKEN, mAccessToken); diff --git a/app/src/main/res/menu/view_post_detail_activity.xml b/app/src/main/res/menu/view_post_detail_activity.xml index 83888218..d971b154 100644 --- a/app/src/main/res/menu/view_post_detail_activity.xml +++ b/app/src/main/res/menu/view_post_detail_activity.xml @@ -29,34 +29,40 @@ android:visible="false" /> + + - - + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index b4d561b3..900c8750 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -30,6 +30,8 @@ Stop Lazy Mode Send Sort + Hide Post + Unhide Post Edit Post Delete Post Mark NSFW @@ -216,6 +218,10 @@ Unable to save post Post unsaved Unable to unsave post + Post hidden + Unable to hide post + Post unhidden + Unable to unhide post Delete This Post Delete This Comment Are you sure?