Clear MSL after SN change.

This commit is contained in:
Greyson Parrelli 2024-01-26 11:21:33 -05:00 committed by Nicholas Tinsley
parent 2c2735af6d
commit 92993f967e
2 changed files with 15 additions and 9 deletions

View file

@ -5,6 +5,7 @@ import android.content.Context
import android.database.sqlite.SQLiteConstraintException
import org.signal.core.util.CursorUtil
import org.signal.core.util.SqlUtil
import org.signal.core.util.delete
import org.signal.core.util.logging.Log
import org.signal.core.util.readToList
import org.signal.core.util.requireBoolean
@ -313,8 +314,6 @@ class MessageSendLogTables constructor(context: Context?, databaseHelper: Signal
}
fun deleteAllRelatedToMessage(messageId: Long) {
if (!FeatureFlags.retryReceipts()) return
val db = databaseHelper.signalWritableDatabase
val query = "${MslPayloadTable.ID} IN (SELECT ${MslMessageTable.PAYLOAD_ID} FROM ${MslMessageTable.TABLE_NAME} WHERE ${MslMessageTable.MESSAGE_ID} = ?)"
val args = SqlUtil.buildArgs(messageId)
@ -323,14 +322,10 @@ class MessageSendLogTables constructor(context: Context?, databaseHelper: Signal
}
fun deleteEntryForRecipient(dateSent: Long, recipientId: RecipientId, device: Int) {
if (!FeatureFlags.retryReceipts()) return
deleteEntriesForRecipient(listOf(dateSent), recipientId, device)
}
fun deleteEntriesForRecipient(dateSent: List<Long>, recipientId: RecipientId, device: Int) {
if (!FeatureFlags.retryReceipts()) return
val db = databaseHelper.signalWritableDatabase
db.beginTransaction()
try {
@ -360,15 +355,25 @@ class MessageSendLogTables constructor(context: Context?, databaseHelper: Signal
}
}
fun deleteAll() {
fun deleteAllForRecipient(recipientId: RecipientId) {
if (!FeatureFlags.retryReceipts()) return
writableDatabase
.delete(MslRecipientTable.TABLE_NAME)
.where("${MslRecipientTable.RECIPIENT_ID} = ?", recipientId)
.run()
writableDatabase
.delete(MslPayloadTable.TABLE_NAME)
.where("${MslPayloadTable.ID} NOT IN (SELECT ${MslRecipientTable.PAYLOAD_ID} FROM ${MslRecipientTable.TABLE_NAME})")
.run()
}
fun deleteAll() {
databaseHelper.signalWritableDatabase.delete(MslPayloadTable.TABLE_NAME, null, null)
}
fun trimOldMessages(currentTime: Long, maxAge: Long) {
if (!FeatureFlags.retryReceipts()) return
val db = databaseHelper.signalWritableDatabase
val query = "${MslPayloadTable.DATE_SENT} < ?"
val args = SqlUtil.buildArgs(currentTime - maxAge)

View file

@ -164,6 +164,7 @@ public final class IdentityUtil {
throw new AssertionError(e);
}
SignalDatabase.messageLog().deleteAllForRecipient(recipientId);
}
public static void saveIdentity(String user, IdentityKey identityKey) {