Fix edit message with media.
This commit is contained in:
parent
8505530547
commit
324e83489e
2 changed files with 14 additions and 10 deletions
|
@ -1488,8 +1488,9 @@ public class AttachmentTable extends DatabaseTable {
|
|||
public void duplicateAttachmentsForMessage(long destinationMessageId, long sourceMessageId, Collection<Long> excludedIds) {
|
||||
SQLiteDatabaseExtensionsKt.withinTransaction(getWritableDatabase(), db -> {
|
||||
db.execSQL("CREATE TEMPORARY TABLE tmp_part AS SELECT * FROM " + TABLE_NAME + " WHERE " + MMS_ID + " = ?", SqlUtil.buildArgs(sourceMessageId));
|
||||
for (Long id : excludedIds) {
|
||||
db.execSQL("DELETE FROM tmp_part WHERE " + ROW_ID + " = ?", SqlUtil.buildArgs(id));
|
||||
List<SqlUtil.Query> queries = SqlUtil.buildCollectionQuery(ROW_ID, excludedIds);
|
||||
for (SqlUtil.Query query : queries) {
|
||||
db.delete("tmp_part", query.getWhere(), query.getWhereArgs());
|
||||
}
|
||||
db.execSQL("UPDATE tmp_part SET " + ROW_ID + " = NULL, " + MMS_ID + " = ?", SqlUtil.buildArgs(destinationMessageId));
|
||||
db.execSQL("INSERT INTO " + TABLE_NAME + " SELECT * FROM tmp_part");
|
||||
|
|
|
@ -2593,13 +2593,7 @@ open class MessageTable(context: Context?, databaseHelper: SignalDatabase) : Dat
|
|||
}
|
||||
|
||||
if (retrieved.attachments.isEmpty() && editedMessage?.id != null && attachments.getAttachmentsForMessage(editedMessage.id).isNotEmpty()) {
|
||||
val linkPreviewAttachmentIds = HashSet<Long>()
|
||||
for (linkPreview in editedMessage.linkPreviews) {
|
||||
val attachmentId = linkPreview.attachmentId
|
||||
if (attachmentId != null) {
|
||||
linkPreviewAttachmentIds.add(attachmentId.rowId)
|
||||
}
|
||||
}
|
||||
val linkPreviewAttachmentIds = editedMessage.linkPreviews.mapNotNull { it.attachmentId?.rowId }.toSet()
|
||||
attachments.duplicateAttachmentsForMessage(messageId, editedMessage.id, linkPreviewAttachmentIds)
|
||||
}
|
||||
|
||||
|
@ -3029,7 +3023,9 @@ open class MessageTable(context: Context?, databaseHelper: SignalDatabase) : Dat
|
|||
contentValues.put(QUOTE_BODY_RANGES, quoteBodyRanges.build().toByteArray())
|
||||
}
|
||||
|
||||
quoteAttachments += message.outgoingQuote.attachments
|
||||
if (editedMessage == null) {
|
||||
quoteAttachments += message.outgoingQuote.attachments
|
||||
}
|
||||
}
|
||||
|
||||
val updatedBodyAndMentions = MentionUtil.updateBodyAndMentionsWithPlaceholders(message.body, message.mentions)
|
||||
|
@ -3084,6 +3080,13 @@ open class MessageTable(context: Context?, databaseHelper: SignalDatabase) : Dat
|
|||
.where("$ID_WHERE OR $LATEST_REVISION_ID = ?", message.messageToEdit, message.messageToEdit)
|
||||
.run()
|
||||
|
||||
val textAttachments = (editedMessage as? MediaMmsMessageRecord)?.slideDeck?.asAttachments()?.filter { it.contentType == MediaUtil.LONG_TEXT }?.mapNotNull { (it as? DatabaseAttachment)?.attachmentId?.rowId } ?: emptyList()
|
||||
val linkPreviewAttachments = (editedMessage as? MediaMmsMessageRecord)?.linkPreviews?.mapNotNull { it.attachmentId?.rowId } ?: emptyList()
|
||||
val excludeIds = HashSet<Long>()
|
||||
excludeIds += textAttachments
|
||||
excludeIds += linkPreviewAttachments
|
||||
attachments.duplicateAttachmentsForMessage(messageId, message.messageToEdit, excludeIds)
|
||||
|
||||
reactions.moveReactionsToNewMessage(messageId, message.messageToEdit)
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue