Skip to content

Commit 15035f4

Browse files
committed
Fix rendering when editing a message with spoilers.
1 parent 1d0a87f commit 15035f4

2 files changed

Lines changed: 18 additions & 0 deletions

File tree

app/src/main/java/org/thoughtcrime/securesms/components/InputPanel.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
import org.thoughtcrime.securesms.components.voice.VoiceNotePlaybackState;
4646
import org.thoughtcrime.securesms.conversation.ConversationMessage;
4747
import org.thoughtcrime.securesms.conversation.ConversationStickerSuggestionAdapter;
48+
import org.thoughtcrime.securesms.conversation.MessageStyler;
4849
import org.thoughtcrime.securesms.conversation.VoiceNoteDraftView;
4950
import org.thoughtcrime.securesms.database.DraftTable;
5051
import org.thoughtcrime.securesms.database.model.MediaMmsMessageRecord;
@@ -396,6 +397,7 @@ public void setWallpaperEnabled(boolean enabled) {
396397
public void enterEditMessageMode(@NonNull GlideRequests glideRequests, @NonNull ConversationMessage conversationMessageToEdit, boolean fromDraft) {
397398
SpannableString textToEdit = conversationMessageToEdit.getDisplayBody(getContext());
398399
if (!fromDraft) {
400+
MessageStyler.convertSpoilersToComposeMode(textToEdit);
399401
composeText.setText(textToEdit);
400402
composeText.setSelection(textToEdit.length());
401403
}

app/src/main/java/org/thoughtcrime/securesms/conversation/MessageStyler.kt

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -261,6 +261,22 @@ object MessageStyler {
261261
}
262262
}
263263

264+
@JvmStatic
265+
fun convertSpoilersToComposeMode(text: Spannable) {
266+
SpoilerAnnotation.getSpoilerAndClickAnnotations(text)
267+
.forEach { (spoiler, clickSpan) ->
268+
val start = text.getSpanStart(spoiler)
269+
val end = text.getSpanEnd(spoiler)
270+
val convertedSpoiler = copyStyleSpan(spoiler, start, end - start)
271+
text.removeSpan(spoiler)
272+
text.setSpan(convertedSpoiler, start, end, SPAN_FLAGS)
273+
274+
if (clickSpan != null) {
275+
text.removeSpan(clickSpan)
276+
}
277+
}
278+
}
279+
264280
fun Any.isSupportedStyle(): Boolean {
265281
return when (this) {
266282
is CharacterStyle -> isSupportedCharacterStyle()

0 commit comments

Comments
 (0)