From f5215d715ae2b2473fd70c7d6149c9738c32c17c Mon Sep 17 00:00:00 2001 From: Alex Hart Date: Mon, 25 Sep 2023 15:17:12 -0300 Subject: [PATCH] Utilize timestamp from table instead of relying on getCurrentMillis. --- .../securesms/calls/log/CallLogRepository.kt | 8 ++++---- .../org/thoughtcrime/securesms/database/CallTable.kt | 11 +++++++++++ 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/calls/log/CallLogRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/calls/log/CallLogRepository.kt index 3fc4adcf44..a2ab894fd5 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/calls/log/CallLogRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/calls/log/CallLogRepository.kt @@ -94,10 +94,10 @@ class CallLogRepository( fun deleteAllCallLogsOnOrBeforeNow(): Single { return Single.fromCallable { SignalDatabase.rawDatabase.withinTransaction { - val now = System.currentTimeMillis() - SignalDatabase.calls.deleteNonAdHocCallEventsOnOrBefore(now) - SignalDatabase.callLinks.deleteNonAdminCallLinksOnOrBefore(now) - ApplicationDependencies.getJobManager().add(CallLogEventSendJob.forClearHistory(now)) + val latestTimestamp = SignalDatabase.calls.getLatestTimestamp() + SignalDatabase.calls.deleteNonAdHocCallEventsOnOrBefore(latestTimestamp) + SignalDatabase.callLinks.deleteNonAdminCallLinksOnOrBefore(latestTimestamp) + ApplicationDependencies.getJobManager().add(CallLogEventSendJob.forClearHistory(latestTimestamp)) } SignalDatabase.callLinks.getAllAdminCallLinksExcept(emptySet()) diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/CallTable.kt b/app/src/main/java/org/thoughtcrime/securesms/database/CallTable.kt index 021c1ed4c4..7ed51e0ebf 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/CallTable.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/CallTable.kt @@ -806,6 +806,17 @@ class CallTable(context: Context, databaseHelper: SignalDatabase) : DatabaseTabl .run() } + /** + * Gets the most recent timestamp from the [TIMESTAMP] column + */ + fun getLatestTimestamp(): Long { + val statement = """ + SELECT $TIMESTAMP FROM $TABLE_NAME ORDER BY $TIMESTAMP DESC LIMIT 1 + """.trimIndent() + + return readableDatabase.query(statement).readToSingleLong(-1) + } + fun deleteNonAdHocCallEventsOnOrBefore(timestamp: Long) { val messageIdsOnOrBeforeTimestamp = """ SELECT $MESSAGE_ID FROM $TABLE_NAME WHERE $TIMESTAMP <= $timestamp AND $MESSAGE_ID IS NOT NULL