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 @@
+