diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiTextView.java b/app/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiTextView.java index 1994932b14..68951b2332 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiTextView.java +++ b/app/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiTextView.java @@ -68,9 +68,10 @@ public class EmojiTextView extends AppCompatTextView { private TextDirectionHeuristic textDirection; private boolean isJumbomoji; private boolean forceJumboEmoji; + private boolean renderSpoilers; - private MentionRendererDelegate mentionRendererDelegate; - private final SpoilerRendererDelegate spoilerRendererDelegate; + private MentionRendererDelegate mentionRendererDelegate; + private SpoilerRendererDelegate spoilerRendererDelegate; public EmojiTextView(Context context) { this(context, null); @@ -90,6 +91,7 @@ public class EmojiTextView extends AppCompatTextView { renderMentions = a.getBoolean(R.styleable.EmojiTextView_emoji_renderMentions, true); measureLastLine = a.getBoolean(R.styleable.EmojiTextView_measureLastLine, false); forceJumboEmoji = a.getBoolean(R.styleable.EmojiTextView_emoji_forceJumbo, false); + renderSpoilers = a.getBoolean(R.styleable.EmojiTextView_emoji_renderSpoilers, false); a.recycle(); a = context.obtainStyledAttributes(attrs, new int[] { android.R.attr.textSize }); @@ -99,7 +101,10 @@ public class EmojiTextView extends AppCompatTextView { if (renderMentions) { mentionRendererDelegate = new MentionRendererDelegate(getContext(), ContextCompat.getColor(getContext(), R.color.transparent_black_20)); } - spoilerRendererDelegate = new SpoilerRendererDelegate(this); + + if (renderSpoilers) { + spoilerRendererDelegate = new SpoilerRendererDelegate(this); + } textDirection = getLayoutDirection() == LAYOUT_DIRECTION_LTR ? TextDirectionHeuristics.FIRSTSTRONG_RTL : TextDirectionHeuristics.ANYRTL_LTR; @@ -127,14 +132,16 @@ public class EmojiTextView extends AppCompatTextView { } } - private void drawSpecialRenderers(@NonNull Canvas canvas, @Nullable MentionRendererDelegate mentionDelegate, @NonNull SpoilerRendererDelegate spoilerDelegate) { + private void drawSpecialRenderers(@NonNull Canvas canvas, @Nullable MentionRendererDelegate mentionDelegate, @Nullable SpoilerRendererDelegate spoilerDelegate) { int checkpoint = canvas.save(); canvas.translate(getTotalPaddingLeft(), getTotalPaddingTop()); try { if (mentionDelegate != null) { mentionDelegate.draw(canvas, (Spanned) getText(), getLayout()); } - spoilerDelegate.draw(canvas, (Spanned) getText(), getLayout()); + if (spoilerDelegate != null) { + spoilerDelegate.draw(canvas, (Spanned) getText(), getLayout()); + } } finally { canvas.restoreToCount(checkpoint); } @@ -431,7 +438,9 @@ public class EmojiTextView extends AppCompatTextView { @Override public void setTextColor(int color) { super.setTextColor(color); - spoilerRendererDelegate.updateFromTextColor(); + if (spoilerRendererDelegate != null) { + spoilerRendererDelegate.updateFromTextColor(); + } } @Override diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/spoiler/SpoilerRendererDelegate.kt b/app/src/main/java/org/thoughtcrime/securesms/components/spoiler/SpoilerRendererDelegate.kt index 752fdf2751..8f77a75f23 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/spoiler/SpoilerRendererDelegate.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/spoiler/SpoilerRendererDelegate.kt @@ -60,6 +60,7 @@ class SpoilerRendererDelegate @JvmOverloads constructor( override fun onResume(owner: LifecycleOwner) { canAnimate = true systemAnimationsEnabled = !AccessibilityUtil.areAnimationsDisabled(view.context) + view.invalidate() } override fun onPause(owner: LifecycleOwner) { diff --git a/app/src/main/res/layout/conversation_item_received_multimedia.xml b/app/src/main/res/layout/conversation_item_received_multimedia.xml index 668425127c..53fa450904 100644 --- a/app/src/main/res/layout/conversation_item_received_multimedia.xml +++ b/app/src/main/res/layout/conversation_item_received_multimedia.xml @@ -228,6 +228,7 @@ app:emoji_maxLength="1000" app:measureLastLine="true" app:scaleEmojis="true" + app:emoji_renderSpoilers="true" tools:text="Mango pickle lorem ipsum" /> diff --git a/app/src/main/res/layout/conversation_item_sent_multimedia.xml b/app/src/main/res/layout/conversation_item_sent_multimedia.xml index 918a593448..a1bae6f17c 100644 --- a/app/src/main/res/layout/conversation_item_sent_multimedia.xml +++ b/app/src/main/res/layout/conversation_item_sent_multimedia.xml @@ -167,6 +167,7 @@ android:textColor="@color/conversation_item_sent_text_primary_color" android:textColorLink="@color/conversation_item_sent_text_primary_color" app:emoji_maxLength="1000" + app:emoji_renderSpoilers="true" app:measureLastLine="true" app:scaleEmojis="true" tools:text="Mango pickle lorem ipsum" /> diff --git a/app/src/main/res/layout/conversation_item_sent_text_only.xml b/app/src/main/res/layout/conversation_item_sent_text_only.xml index 1a57523995..fa32553007 100644 --- a/app/src/main/res/layout/conversation_item_sent_text_only.xml +++ b/app/src/main/res/layout/conversation_item_sent_text_only.xml @@ -59,6 +59,7 @@ android:textColor="@color/conversation_item_sent_text_primary_color" android:textColorLink="@color/conversation_item_sent_text_primary_color" app:emoji_maxLength="1000" + app:emoji_renderSpoilers="true" app:scaleEmojis="true" app:measureLastLine="true" tools:text="Mango pickle lorem ipsum" /> diff --git a/app/src/main/res/values/attrs.xml b/app/src/main/res/values/attrs.xml index 6c716f4a9d..718a1c37e0 100644 --- a/app/src/main/res/values/attrs.xml +++ b/app/src/main/res/values/attrs.xml @@ -146,6 +146,7 @@ +