From 6e8f3d1e71793d6848c9141f64b7bf731388d98b Mon Sep 17 00:00:00 2001 From: Cody Henthorne Date: Mon, 6 Mar 2023 09:47:12 -0500 Subject: [PATCH] Fix scheduled message changing disappearing messages bug. --- .idea/codeStyles/Project.xml | 3 +++ .../thoughtcrime/securesms/database/RecipientTable.kt | 10 ++++++++++ .../securesms/service/ScheduledMessageManager.kt | 3 ++- 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml index 2a0f83248..6a5c9cbb8 100644 --- a/.idea/codeStyles/Project.xml +++ b/.idea/codeStyles/Project.xml @@ -42,6 +42,9 @@ + diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/RecipientTable.kt b/app/src/main/java/org/thoughtcrime/securesms/database/RecipientTable.kt index 2b4bbafb3..65e0e1285 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/RecipientTable.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/RecipientTable.kt @@ -24,6 +24,7 @@ import org.signal.core.util.optionalString import org.signal.core.util.or import org.signal.core.util.readToSet import org.signal.core.util.readToSingleBoolean +import org.signal.core.util.readToSingleLong import org.signal.core.util.requireBlob import org.signal.core.util.requireBoolean import org.signal.core.util.requireInt @@ -3625,6 +3626,15 @@ open class RecipientTable(context: Context, databaseHelper: SignalDatabase) : Da } } + fun getExpiresInSeconds(id: RecipientId): Long { + return readableDatabase + .select(MESSAGE_EXPIRATION_TIME) + .from(TABLE_NAME) + .where(ID_WHERE, id) + .run() + .readToSingleLong(0L) + } + /** * Will update the database with the content values you specified. It will make an intelligent * query such that this will only return true if a row was *actually* updated. diff --git a/app/src/main/java/org/thoughtcrime/securesms/service/ScheduledMessageManager.kt b/app/src/main/java/org/thoughtcrime/securesms/service/ScheduledMessageManager.kt index 197a9c27b..c2c91b143 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/service/ScheduledMessageManager.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/service/ScheduledMessageManager.kt @@ -54,7 +54,8 @@ class ScheduledMessageManager( override fun executeEvent(event: Event) { val scheduledMessagesToSend = messagesTable.getScheduledMessagesBefore(System.currentTimeMillis()) for (record in scheduledMessagesToSend) { - if (messagesTable.clearScheduledStatus(record.threadId, record.id, record.recipient.expiresInSeconds.seconds.inWholeMilliseconds)) { + val expiresIn = SignalDatabase.recipients.getExpiresInSeconds(record.recipient.id) + if (messagesTable.clearScheduledStatus(record.threadId, record.id, expiresIn.seconds.inWholeMilliseconds)) { if (record.recipient.isPushGroup) { PushGroupSendJob.enqueue(application, ApplicationDependencies.getJobManager(), record.id, record.recipient.id, emptySet(), true) } else {