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 {