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);
|
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();
|
int originalHeight = composeTextContainer.getMeasuredHeight();
|
||||||
SpannableString textToEdit = conversationMessageToEdit.getDisplayBody(getContext());
|
SpannableString textToEdit = conversationMessageToEdit.getDisplayBody(getContext());
|
||||||
|
|
||||||
if (!fromDraft) {
|
if (!fromDraft) {
|
||||||
MessageStyler.convertSpoilersToComposeMode(textToEdit);
|
MessageStyler.convertSpoilersToComposeMode(textToEdit);
|
||||||
composeText.setText(textToEdit);
|
composeText.setText(textToEdit);
|
||||||
composeText.setSelection(textToEdit.length());
|
composeText.setSelection(textToEdit.length());
|
||||||
}
|
}
|
||||||
|
|
||||||
Quote quote = MessageRecordUtil.getQuote(conversationMessageToEdit.getMessageRecord());
|
Quote quote = MessageRecordUtil.getQuote(conversationMessageToEdit.getMessageRecord());
|
||||||
if (quote == null) {
|
if (quote == null || clearQuote) {
|
||||||
clearQuote();
|
clearQuote();
|
||||||
} else {
|
} else {
|
||||||
setQuote(requestManager, quote.getId(), Recipient.resolved(quote.getAuthor()), quote.getDisplayText(), quote.getAttachment(), quote.getQuoteType());
|
setQuote(requestManager, quote.getId(), Recipient.resolved(quote.getAuthor()), quote.getDisplayText(), quote.getAttachment(), quote.getQuoteType());
|
||||||
}
|
}
|
||||||
|
|
||||||
this.messageToEdit = conversationMessageToEdit.getMessageRecord();
|
this.messageToEdit = conversationMessageToEdit.getMessageRecord();
|
||||||
updateEditModeThumbnail(requestManager);
|
updateEditModeThumbnail(requestManager);
|
||||||
|
|
||||||
|
|
|
@ -132,6 +132,11 @@ class DraftRepository(
|
||||||
|
|
||||||
val draftText: CharSequence? = drafts.firstOrNull { it.type == DraftTable.Draft.TEXT }?.let { updatedText ?: it.value }
|
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) }
|
val location: SignalPlace? = drafts.firstOrNull { it.type == DraftTable.Draft.LOCATION }?.let { SignalPlace.deserialize(it.value) }
|
||||||
if (location != null) {
|
if (location != null) {
|
||||||
return ShareOrDraftData.SetLocation(location, draftText) to drafts
|
return ShareOrDraftData.SetLocation(location, draftText) to drafts
|
||||||
|
@ -142,11 +147,6 @@ class DraftRepository(
|
||||||
return ShareOrDraftData.SetQuote(quote, draftText) to drafts
|
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) {
|
if (draftText != null) {
|
||||||
return ShareOrDraftData.SetText(draftText) to drafts
|
return ShareOrDraftData.SetText(draftText) to drafts
|
||||||
}
|
}
|
||||||
|
@ -248,6 +248,6 @@ class DraftRepository(
|
||||||
data class SetText(val text: CharSequence) : ShareOrDraftData
|
data class SetText(val text: CharSequence) : ShareOrDraftData
|
||||||
data class SetLocation(val location: SignalPlace, val draftText: CharSequence?) : ShareOrDraftData
|
data class SetLocation(val location: SignalPlace, val draftText: CharSequence?) : ShareOrDraftData
|
||||||
data class SetQuote(val quote: ConversationMessage, 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.SetLocation -> attachmentManager.setLocation(data.location, MediaConstraints.getPushMediaConstraints())
|
||||||
is ShareOrDraftData.SetEditMessage -> {
|
is ShareOrDraftData.SetEditMessage -> {
|
||||||
composeText.setDraftText(data.draftText)
|
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 -> {
|
is ShareOrDraftData.SetMedia -> {
|
||||||
|
@ -2326,7 +2326,7 @@ class ConversationFragment :
|
||||||
|
|
||||||
viewModel.resolveMessageToEdit(conversationMessage)
|
viewModel.resolveMessageToEdit(conversationMessage)
|
||||||
.subscribeBy { updatedMessage ->
|
.subscribeBy { updatedMessage ->
|
||||||
inputPanel.enterEditMessageMode(Glide.with(this), updatedMessage, false)
|
inputPanel.enterEditMessageMode(Glide.with(this), updatedMessage, false, false)
|
||||||
}
|
}
|
||||||
.addTo(disposables)
|
.addTo(disposables)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue