Fix NoSuchMessageException when loading stories.

This commit is contained in:
Alex Hart
2025-10-15 13:25:16 -03:00
committed by Cody Henthorne
parent 518bf04e1d
commit e57b47ec82

View File

@@ -5,9 +5,11 @@ import io.reactivex.rxjava3.core.Completable
import io.reactivex.rxjava3.core.Observable
import io.reactivex.rxjava3.schedulers.Schedulers
import org.signal.core.util.concurrent.SignalExecutors
import org.signal.core.util.logging.Log
import org.thoughtcrime.securesms.conversation.ConversationMessage
import org.thoughtcrime.securesms.database.DatabaseObserver
import org.thoughtcrime.securesms.database.MessageTable
import org.thoughtcrime.securesms.database.NoSuchMessageException
import org.thoughtcrime.securesms.database.RxDatabaseObserver
import org.thoughtcrime.securesms.database.SignalDatabase
import org.thoughtcrime.securesms.database.model.DistributionListId
@@ -24,6 +26,10 @@ import org.thoughtcrime.securesms.sms.MessageSender
class StoriesLandingRepository(context: Context) {
companion object {
private val TAG = Log.tag(StoriesLandingRepository::class)
}
private val context = context.applicationContext
fun resend(story: MessageRecord): Completable {
@@ -66,8 +72,13 @@ class StoriesLandingRepository(context: Context) {
.sortedBy { it.messageSentTimestamp }
.reversed()
.take(if (recipient.isMyStory) 2 else 1)
.map {
SignalDatabase.messages.getMessageRecord(it.messageId)
.mapNotNull {
try {
SignalDatabase.messages.getMessageRecord(it.messageId)
} catch (e: NoSuchMessageException) {
Log.w(TAG, "Failed to find message record ${it.messageId} sent at ${it.messageSentTimestamp} for story.", e)
null
}
}
var sendingCount: Long = 0
@@ -88,7 +99,11 @@ class StoriesLandingRepository(context: Context) {
}
}
createStoriesLandingItemData(recipient, messages, sendingCount, failureCount)
if (messages.isNotEmpty()) {
createStoriesLandingItemData(recipient, messages, sendingCount, failureCount)
} else {
Observable.empty()
}
}
if (observables.isEmpty()) {