From cc46e09853d5d9b19866e79cde0a4bad4ad25bfd Mon Sep 17 00:00:00 2001 From: sk Date: Mon, 28 Aug 2023 23:24:56 +0200 Subject: [PATCH] fix issue with visibility button closes sk22#740 --- .../org/joinmastodon/android/model/Status.java | 4 ++++ .../displayitems/HeaderStatusDisplayItem.java | 17 +++++++++++------ 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/mastodon/src/main/java/org/joinmastodon/android/model/Status.java b/mastodon/src/main/java/org/joinmastodon/android/model/Status.java index 35ec59419..8282c4230 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/model/Status.java +++ b/mastodon/src/main/java/org/joinmastodon/android/model/Status.java @@ -188,6 +188,10 @@ public class Status extends BaseModel implements DisplayItemsParent, Searchable{ return strippedText; } + public boolean hasSpoiler(){ + return !TextUtils.isEmpty(spoilerText); + } + @NonNull @Override public Status clone(){ diff --git a/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/HeaderStatusDisplayItem.java b/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/HeaderStatusDisplayItem.java index 41a6c1d81..92e7b1e03 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/HeaderStatusDisplayItem.java +++ b/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/HeaderStatusDisplayItem.java @@ -192,7 +192,7 @@ public class HeaderStatusDisplayItem extends StatusDisplayItem{ } } boolean isPixelfed = item.parentFragment.isInstancePixelfed(); - boolean textEmpty = TextUtils.isEmpty(item.status.content) && TextUtils.isEmpty(item.status.spoilerText); + boolean textEmpty = TextUtils.isEmpty(item.status.content) && !item.status.hasSpoiler(); if(!redraft && (isPixelfed || textEmpty)){ // pixelfed doesn't support /statuses/:id/source :/ if (isPixelfed) { @@ -324,11 +324,16 @@ public class HeaderStatusDisplayItem extends StatusDisplayItem{ deleteNotification.setVisibility(GlobalUserPreferences.enableDeleteNotifications && item.notification!=null && !item.inset ? View.VISIBLE : View.GONE); if (item.hasVisibilityToggle){ - boolean disabled = !item.status.sensitiveRevealed || - (!TextUtils.isEmpty(item.status.spoilerText) && - !item.status.spoilerRevealed); - visibility.setEnabled(!disabled); - V.setVisibilityAnimated(visibility, disabled ? View.INVISIBLE : View.VISIBLE); + boolean hidden = !item.status.sensitiveRevealed || (item.status.hasSpoiler() && !item.status.spoilerRevealed); + + // doing this because V.setVisibilityAnimated ignores changes between INVISIBLE and GONE + int newVis=hidden ? View.INVISIBLE : View.VISIBLE; + if(newVis==View.INVISIBLE && visibility.getVisibility()==View.GONE) + visibility.setVisibility(newVis); + else + V.setVisibilityAnimated(visibility, newVis); + + visibility.setEnabled(!hidden); visibility.setContentDescription(item.parentFragment.getString(item.status.sensitiveRevealed ? R.string.spoiler_hide : R.string.spoiler_show)); if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.O){ visibility.setTooltipText(visibility.getContentDescription());