Fix edit quote draft loading incorrectly bug.

This commit is contained in:
Cody Henthorne 2024-07-08 13:46:46 -04:00
parent f5abd7acdf
commit 41a3609f06
3 changed files with 13 additions and 10 deletions

View file

@ -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);

View file

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

View file

@ -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)
}