Fix edit quote draft loading incorrectly bug.
This commit is contained in:
parent
f5abd7acdf
commit
41a3609f06
3 changed files with 13 additions and 10 deletions
|
@ -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);
|
||||
|
||||
|
|
|
@ -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
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue