From 7af94f60ae7579b0ce2958d91fecbb078e64fc23 Mon Sep 17 00:00:00 2001 From: clark-signal Date: Thu, 12 Jan 2023 16:23:53 -0500 Subject: [PATCH] Fix story linking from private story reply. --- .../securesms/database/StorySendTable.kt | 18 ++++++++++++++++++ .../messages/MessageContentProcessor.java | 11 ++++++++++- 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/StorySendTable.kt b/app/src/main/java/org/thoughtcrime/securesms/database/StorySendTable.kt index fd2ae0a26..513851334 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/StorySendTable.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/StorySendTable.kt @@ -191,6 +191,24 @@ class StorySendTable(context: Context, databaseHelper: SignalDatabase) : Databas return messageIds } + fun getStoryMessageFor(recipientId: RecipientId, timestamp: Long): MessageId? { + readableDatabase.query( + TABLE_NAME, + arrayOf(MESSAGE_ID), + "$RECIPIENT_ID = ? AND $SENT_TIMESTAMP = ?", + SqlUtil.buildArgs(recipientId, timestamp), + null, + null, + null, + "1" + ).use { cursor -> + if (cursor.moveToFirst()) { + return MessageId(cursor.requireLong(MESSAGE_ID)) + } + } + return null + } + override fun remapRecipient(oldId: RecipientId, newId: RecipientId) { val query = "$RECIPIENT_ID = ?" val args = SqlUtil.buildArgs(oldId) diff --git a/app/src/main/java/org/thoughtcrime/securesms/messages/MessageContentProcessor.java b/app/src/main/java/org/thoughtcrime/securesms/messages/MessageContentProcessor.java index 3699e7bbf..b6de1a2fe 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/messages/MessageContentProcessor.java +++ b/app/src/main/java/org/thoughtcrime/securesms/messages/MessageContentProcessor.java @@ -35,6 +35,7 @@ import org.thoughtcrime.securesms.crypto.SecurityEvent; import org.thoughtcrime.securesms.database.AttachmentTable; import org.thoughtcrime.securesms.database.CallTable; import org.thoughtcrime.securesms.database.GroupTable; +import org.thoughtcrime.securesms.database.StorySendTable; import org.thoughtcrime.securesms.database.model.GroupRecord; import org.thoughtcrime.securesms.database.GroupReceiptTable; import org.thoughtcrime.securesms.database.GroupReceiptTable.GroupReceiptInfo; @@ -1750,12 +1751,20 @@ public final class MessageContentProcessor { try { RecipientId storyAuthorRecipient = RecipientId.from(storyContext.getAuthorServiceId()); + RecipientId selfId = Recipient.self().getId(); ParentStoryId parentStoryId; QuoteModel quoteModel = null; long expiresInMillis = 0L; + MessageId storyMessageId = null; try { - MessageId storyMessageId = database.getStoryId(storyAuthorRecipient, storyContext.getSentTimestamp()); + if (selfId.equals(storyAuthorRecipient)) { + storyMessageId = SignalDatabase.storySends().getStoryMessageFor(senderRecipient.getId(), storyContext.getSentTimestamp()); + } + if (storyMessageId == null) { + storyMessageId = database.getStoryId(storyAuthorRecipient, storyContext.getSentTimestamp()); + } + MmsMessageRecord story = (MmsMessageRecord) database.getMessageRecord(storyMessageId.getId()); Recipient threadRecipient = Objects.requireNonNull(SignalDatabase.threads().getRecipientForThreadId(story.getThreadId())); boolean groupStory = threadRecipient.isActiveGroup();