mirror of
https://github.com/oxen-io/session-android.git
synced 2025-08-15 05:47:36 +00:00
Add synced expiries job
This commit is contained in:
@@ -201,6 +201,11 @@ class DatabaseAttachmentProvider(context: Context, helper: SQLCipherOpenHelper)
|
||||
return messageDB.getMessageServerHash(messageID)
|
||||
}
|
||||
|
||||
override fun getServerHashForMessages(messageIDs: List<Long>): List<Pair<Long, String?>> {
|
||||
val messageDB = DatabaseComponent.get(context).lokiMessageDatabase()
|
||||
return messageDB.getMessageServerHashes(messageIDs)
|
||||
}
|
||||
|
||||
override fun getDatabaseAttachment(attachmentId: Long): DatabaseAttachment? {
|
||||
val attachmentDatabase = DatabaseComponent.get(context).attachmentDatabase()
|
||||
return attachmentDatabase.getAttachment(AttachmentId(attachmentId, 0))
|
||||
|
@@ -165,6 +165,13 @@ class LokiMessageDatabase(context: Context, helper: SQLCipherOpenHelper) : Datab
|
||||
}
|
||||
}
|
||||
|
||||
fun getMessageServerHashes(messageIDs: List<Long>): List<Pair<Long, String?>> {
|
||||
val database = databaseHelper.readableDatabase
|
||||
return database.getAll(messageHashTable, "${Companion.messageID} IN (?)", arrayOf(messageIDs.joinToString(","))) { cursor ->
|
||||
cursor.getLong(messageID) to cursor.getStringOrNull(serverHash)
|
||||
}
|
||||
}
|
||||
|
||||
fun setMessageServerHash(messageID: Long, serverHash: String) {
|
||||
val database = databaseHelper.writableDatabase
|
||||
val contentValues = ContentValues(2)
|
||||
|
@@ -288,6 +288,12 @@ class MmsDatabase(context: Context, databaseHelper: SQLCipherOpenHelper) : Messa
|
||||
return readerFor(rawQuery(where, null))!!
|
||||
}
|
||||
|
||||
val expireNotStartedMessages: Reader
|
||||
get() {
|
||||
val where = "$EXPIRES_IN > 0 AND $EXPIRE_STARTED = 0"
|
||||
return readerFor(rawQuery(where, null))!!
|
||||
}
|
||||
|
||||
private fun updateMailboxBitmask(
|
||||
id: Long,
|
||||
maskOff: Long,
|
||||
|
@@ -50,6 +50,7 @@ import org.thoughtcrime.securesms.database.model.ReactionRecord;
|
||||
import org.thoughtcrime.securesms.database.model.SmsMessageRecord;
|
||||
import org.thoughtcrime.securesms.dependencies.DatabaseComponent;
|
||||
|
||||
import java.io.Closeable;
|
||||
import java.io.IOException;
|
||||
import java.security.SecureRandom;
|
||||
import java.util.Collections;
|
||||
@@ -567,6 +568,11 @@ public class SmsDatabase extends MessagingDatabase {
|
||||
return rawQuery(where, null);
|
||||
}
|
||||
|
||||
public Cursor getExpirationNotStartedMessages() {
|
||||
String where = EXPIRES_IN + " > 0 AND " + EXPIRE_STARTED + " = 0";
|
||||
return rawQuery(where, null);
|
||||
}
|
||||
|
||||
public SmsMessageRecord getMessage(long messageId) throws NoSuchMessageException {
|
||||
Cursor cursor = rawQuery(ID_WHERE, new String[]{messageId + ""});
|
||||
Reader reader = new Reader(cursor);
|
||||
@@ -740,7 +746,7 @@ public class SmsDatabase extends MessagingDatabase {
|
||||
}
|
||||
}
|
||||
|
||||
public class Reader {
|
||||
public class Reader implements Closeable {
|
||||
|
||||
private final Cursor cursor;
|
||||
|
||||
@@ -805,8 +811,11 @@ public class SmsDatabase extends MessagingDatabase {
|
||||
return new LinkedList<>();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void close() {
|
||||
cursor.close();
|
||||
if (cursor != null) {
|
||||
cursor.close();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -983,8 +983,25 @@ class Storage(context: Context, helper: SQLCipherOpenHelper) : Database(context,
|
||||
DatabaseComponent.get(context).expirationConfigurationDatabase().setExpirationConfiguration(config)
|
||||
}
|
||||
|
||||
override fun getExpiringMessages(messageIds: LongArray): List<Pair<String, Int>> {
|
||||
return emptyList()
|
||||
override fun getExpiringMessages(messageIds: List<Long>): List<Pair<Long, Long>> {
|
||||
val expiringMessages = mutableListOf<Pair<Long, Long>>()
|
||||
val smsDb = DatabaseComponent.get(context).smsDatabase()
|
||||
smsDb.readerFor(smsDb.expirationNotStartedMessages).use { reader ->
|
||||
while (reader.next != null) {
|
||||
if (reader.current.id in messageIds) {
|
||||
expiringMessages.add(reader.current.id to reader.current.expiresIn)
|
||||
}
|
||||
}
|
||||
}
|
||||
val mmsDb = DatabaseComponent.get(context).mmsDatabase()
|
||||
mmsDb.expireNotStartedMessages.use { reader ->
|
||||
while (reader.next != null) {
|
||||
if (reader.current.id in messageIds) {
|
||||
expiringMessages.add(reader.current.id to reader.current.expiresIn)
|
||||
}
|
||||
}
|
||||
}
|
||||
return expiringMessages
|
||||
}
|
||||
|
||||
override fun updateDisappearingState(address: String, disappearingState: Recipient.DisappearingState) {
|
||||
|
Reference in New Issue
Block a user