diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/InputPanel.java b/app/src/main/java/org/thoughtcrime/securesms/components/InputPanel.java index c0bfe002ff..581bf6738f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/InputPanel.java +++ b/app/src/main/java/org/thoughtcrime/securesms/components/InputPanel.java @@ -408,20 +408,23 @@ public class InputPanel extends ConstraintLayout quoteView.setWallpaperEnabled(enabled); } - public void enterEditMessageMode(@NonNull RequestManager requestManager, @NonNull ConversationMessage conversationMessageToEdit, boolean fromDraft) { + public void enterEditMessageMode(@NonNull RequestManager requestManager, @NonNull ConversationMessage conversationMessageToEdit, boolean fromDraft, boolean clearQuote) { int originalHeight = composeTextContainer.getMeasuredHeight(); SpannableString textToEdit = conversationMessageToEdit.getDisplayBody(getContext()); + if (!fromDraft) { MessageStyler.convertSpoilersToComposeMode(textToEdit); composeText.setText(textToEdit); composeText.setSelection(textToEdit.length()); } + Quote quote = MessageRecordUtil.getQuote(conversationMessageToEdit.getMessageRecord()); - if (quote == null) { + if (quote == null || clearQuote) { clearQuote(); } else { setQuote(requestManager, quote.getId(), Recipient.resolved(quote.getAuthor()), quote.getDisplayText(), quote.getAttachment(), quote.getQuoteType()); } + this.messageToEdit = conversationMessageToEdit.getMessageRecord(); updateEditModeThumbnail(requestManager); diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/drafts/DraftRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/drafts/DraftRepository.kt index 2bcb8f5d3d..aa85ac769f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/drafts/DraftRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/drafts/DraftRepository.kt @@ -132,6 +132,11 @@ class DraftRepository( val draftText: CharSequence? = drafts.firstOrNull { it.type == DraftTable.Draft.TEXT }?.let { updatedText ?: it.value } + val messageEdit: ConversationMessage? = drafts.firstOrNull { it.type == DraftTable.Draft.MESSAGE_EDIT }?.let { loadDraftMessageEditInternal(it.value) } + if (messageEdit != null) { + return ShareOrDraftData.SetEditMessage(messageEdit, draftText, clearQuote = drafts.none { it.type == DraftTable.Draft.QUOTE }) to drafts + } + val location: SignalPlace? = drafts.firstOrNull { it.type == DraftTable.Draft.LOCATION }?.let { SignalPlace.deserialize(it.value) } if (location != null) { return ShareOrDraftData.SetLocation(location, draftText) to drafts @@ -142,11 +147,6 @@ class DraftRepository( return ShareOrDraftData.SetQuote(quote, draftText) to drafts } - val messageEdit: ConversationMessage? = drafts.firstOrNull { it.type == DraftTable.Draft.MESSAGE_EDIT }?.let { loadDraftMessageEditInternal(it.value) } - if (messageEdit != null) { - return ShareOrDraftData.SetEditMessage(messageEdit, draftText) to drafts - } - if (draftText != null) { return ShareOrDraftData.SetText(draftText) to drafts } @@ -248,6 +248,6 @@ class DraftRepository( data class SetText(val text: CharSequence) : ShareOrDraftData data class SetLocation(val location: SignalPlace, val draftText: CharSequence?) : ShareOrDraftData data class SetQuote(val quote: ConversationMessage, val draftText: CharSequence?) : ShareOrDraftData - data class SetEditMessage(val messageEdit: ConversationMessage, val draftText: CharSequence?) : ShareOrDraftData + data class SetEditMessage(val messageEdit: ConversationMessage, val draftText: CharSequence?, val clearQuote: Boolean) : ShareOrDraftData } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationFragment.kt index 73f63b77f7..45ce476ac4 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationFragment.kt @@ -1496,7 +1496,7 @@ class ConversationFragment : is ShareOrDraftData.SetLocation -> attachmentManager.setLocation(data.location, MediaConstraints.getPushMediaConstraints()) is ShareOrDraftData.SetEditMessage -> { composeText.setDraftText(data.draftText) - inputPanel.enterEditMessageMode(Glide.with(this), data.messageEdit, true) + inputPanel.enterEditMessageMode(Glide.with(this), data.messageEdit, true, data.clearQuote) } is ShareOrDraftData.SetMedia -> { @@ -2326,7 +2326,7 @@ class ConversationFragment : viewModel.resolveMessageToEdit(conversationMessage) .subscribeBy { updatedMessage -> - inputPanel.enterEditMessageMode(Glide.with(this), updatedMessage, false) + inputPanel.enterEditMessageMode(Glide.with(this), updatedMessage, false, false) } .addTo(disposables) }