From a8ba0dcccacd1481ae47693dc5a9f9b282e6225c Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Sat, 21 Mar 2026 21:10:39 -0400 Subject: [PATCH] Fix story reply thumbnails. --- .../thoughtcrime/securesms/messages/DataMessageProcessor.kt | 5 +++-- .../thoughtcrime/securesms/messages/SyncMessageProcessor.kt | 3 ++- .../securesms/stories/landing/StoriesLandingRepository.kt | 3 ++- .../securesms/stories/viewer/post/StoryTextPostRepository.kt | 3 ++- .../viewer/reply/direct/StoryDirectReplyRepository.kt | 5 +++-- 5 files changed, 12 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/messages/DataMessageProcessor.kt b/app/src/main/java/org/thoughtcrime/securesms/messages/DataMessageProcessor.kt index 4825ccda30..00afa1617f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/messages/DataMessageProcessor.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/messages/DataMessageProcessor.kt @@ -47,6 +47,7 @@ import org.thoughtcrime.securesms.database.model.databaseprotos.MessageExtras import org.thoughtcrime.securesms.database.model.databaseprotos.PinnedMessage import org.thoughtcrime.securesms.database.model.databaseprotos.PollTerminate import org.thoughtcrime.securesms.database.model.toBodyRangeList +import org.thoughtcrime.securesms.database.withAttachments import org.thoughtcrime.securesms.dependencies.AppDependencies import org.thoughtcrime.securesms.groups.BadGroupIdException import org.thoughtcrime.securesms.groups.GroupAccessControl @@ -458,7 +459,7 @@ object DataMessageProcessor { if (groupId != null) { parentStoryId = GroupReply(storyId) } else if (SignalDatabase.storySends.canReply(senderRecipientId, sentTimestamp)) { - val story = SignalDatabase.messages.getMessageRecord(storyId) as MmsMessageRecord + val story = SignalDatabase.messages.getMessageRecord(storyId).withAttachments() as MmsMessageRecord var displayText = "" var bodyRanges: BodyRangeList? = null @@ -771,7 +772,7 @@ object DataMessageProcessor { storyMessageId = SignalDatabase.messages.getStoryId(storyAuthorRecipientId, sentTimestamp) } - val story: MmsMessageRecord = SignalDatabase.messages.getMessageRecord(storyMessageId.id) as MmsMessageRecord + val story: MmsMessageRecord = SignalDatabase.messages.getMessageRecord(storyMessageId.id).withAttachments() as MmsMessageRecord var threadRecipient: Recipient = SignalDatabase.threads.getRecipientForThreadId(story.threadId)!! val groupRecord: GroupRecord? = SignalDatabase.groups.getGroup(threadRecipient.id).orNull() val groupStory: Boolean = groupRecord?.isActive ?: false diff --git a/app/src/main/java/org/thoughtcrime/securesms/messages/SyncMessageProcessor.kt b/app/src/main/java/org/thoughtcrime/securesms/messages/SyncMessageProcessor.kt index d5cff99e55..0392695bca 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/messages/SyncMessageProcessor.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/messages/SyncMessageProcessor.kt @@ -51,6 +51,7 @@ import org.thoughtcrime.securesms.database.model.databaseprotos.MessageExtras import org.thoughtcrime.securesms.database.model.databaseprotos.PinnedMessage import org.thoughtcrime.securesms.database.model.databaseprotos.PollTerminate import org.thoughtcrime.securesms.database.model.toBodyRangeList +import org.thoughtcrime.securesms.database.withAttachments import org.thoughtcrime.securesms.dependencies.AppDependencies import org.thoughtcrime.securesms.groups.BadGroupIdException import org.thoughtcrime.securesms.groups.GroupChangeBusyException @@ -756,7 +757,7 @@ object SyncMessageProcessor { var expiresInMillis = 0L val storyAuthorRecipient: RecipientId = RecipientId.from(authorServiceId) val storyMessageId: Long = SignalDatabase.messages.getStoryId(storyAuthorRecipient, sentTimestamp).id - val story: MmsMessageRecord = SignalDatabase.messages.getMessageRecord(storyMessageId) as MmsMessageRecord + val story: MmsMessageRecord = SignalDatabase.messages.getMessageRecord(storyMessageId).withAttachments() as MmsMessageRecord val threadRecipientId: RecipientId? = SignalDatabase.threads.getRecipientForThreadId(story.threadId)?.id val groupStory: Boolean = threadRecipientId != null && (SignalDatabase.groups.getGroup(threadRecipientId).orNull()?.isActive ?: false) var bodyRanges: BodyRangeList? = null diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/landing/StoriesLandingRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/landing/StoriesLandingRepository.kt index 93029889b8..797e17f3b7 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/landing/StoriesLandingRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/landing/StoriesLandingRepository.kt @@ -16,6 +16,7 @@ import org.thoughtcrime.securesms.database.model.DistributionListId import org.thoughtcrime.securesms.database.model.MessageRecord import org.thoughtcrime.securesms.database.model.StoryResult import org.thoughtcrime.securesms.database.model.StoryViewState +import org.thoughtcrime.securesms.database.withAttachments import org.thoughtcrime.securesms.dependencies.AppDependencies import org.thoughtcrime.securesms.jobs.MultiDeviceReadUpdateJob import org.thoughtcrime.securesms.keyvalue.SignalStore @@ -74,7 +75,7 @@ class StoriesLandingRepository(context: Context) { .take(if (recipient.isMyStory) 2 else 1) .mapNotNull { try { - SignalDatabase.messages.getMessageRecord(it.messageId) + SignalDatabase.messages.getMessageRecord(it.messageId).withAttachments() } catch (e: NoSuchMessageException) { Log.w(TAG, "Failed to find message record ${it.messageId} sent at ${it.messageSentTimestamp} for story.", e) null diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/post/StoryTextPostRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/post/StoryTextPostRepository.kt index 7d2f483f02..615c92cf77 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/post/StoryTextPostRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/post/StoryTextPostRepository.kt @@ -7,6 +7,7 @@ import org.signal.core.util.Base64 import org.thoughtcrime.securesms.database.SignalDatabase import org.thoughtcrime.securesms.database.model.MmsMessageRecord import org.thoughtcrime.securesms.database.model.databaseprotos.StoryTextPost +import org.thoughtcrime.securesms.database.withAttachments import org.thoughtcrime.securesms.dependencies.AppDependencies import org.thoughtcrime.securesms.fonts.TextFont import org.thoughtcrime.securesms.fonts.TextToScript @@ -15,7 +16,7 @@ import org.thoughtcrime.securesms.fonts.TypefaceCache class StoryTextPostRepository { fun getRecord(recordId: Long): Single { return Single.fromCallable { - SignalDatabase.messages.getMessageRecord(recordId) as MmsMessageRecord + SignalDatabase.messages.getMessageRecord(recordId).withAttachments() as MmsMessageRecord }.subscribeOn(Schedulers.io()) } diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/reply/direct/StoryDirectReplyRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/reply/direct/StoryDirectReplyRepository.kt index d2b0fc75db..84fbf6f799 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/reply/direct/StoryDirectReplyRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/reply/direct/StoryDirectReplyRepository.kt @@ -9,6 +9,7 @@ import org.thoughtcrime.securesms.database.model.MessageRecord import org.thoughtcrime.securesms.database.model.MmsMessageRecord import org.thoughtcrime.securesms.database.model.ParentStoryId import org.thoughtcrime.securesms.database.model.databaseprotos.BodyRangeList +import org.thoughtcrime.securesms.database.withAttachments import org.thoughtcrime.securesms.mms.OutgoingMessage import org.thoughtcrime.securesms.mms.QuoteModel import org.thoughtcrime.securesms.recipients.Recipient @@ -22,13 +23,13 @@ class StoryDirectReplyRepository(context: Context) { fun getStoryPost(storyId: Long): Single { return Single.fromCallable { - SignalDatabase.messages.getMessageRecord(storyId) + SignalDatabase.messages.getMessageRecord(storyId).withAttachments() }.subscribeOn(Schedulers.io()) } fun send(storyId: Long, groupDirectReplyRecipientId: RecipientId?, body: CharSequence, bodyRangeList: BodyRangeList?, isReaction: Boolean): Completable { return Completable.create { emitter -> - val message = SignalDatabase.messages.getMessageRecord(storyId) as MmsMessageRecord + val message = SignalDatabase.messages.getMessageRecord(storyId).withAttachments() as MmsMessageRecord val (recipient, threadId) = if (groupDirectReplyRecipientId == null) { message.fromRecipient to message.threadId } else {