Skip to content

Commit 750fd4e

Browse files
Improve safety of update and delete database methods.
1 parent e361795 commit 750fd4e

22 files changed

Lines changed: 124 additions & 101 deletions

app/src/androidTest/java/org/thoughtcrime/securesms/database/GroupTableTest.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import org.junit.Assert.assertTrue
77
import org.junit.Before
88
import org.junit.Rule
99
import org.junit.Test
10-
import org.signal.core.util.delete
10+
import org.signal.core.util.deleteAll
1111
import org.signal.core.util.readToList
1212
import org.signal.core.util.requireLong
1313
import org.signal.core.util.withinTransaction
@@ -33,8 +33,8 @@ class GroupTableTest {
3333
fun setUp() {
3434
groupTable = SignalDatabase.groups
3535

36-
groupTable.writableDatabase.delete(GroupTable.TABLE_NAME).run()
37-
groupTable.writableDatabase.delete(GroupTable.MembershipTable.TABLE_NAME).run()
36+
groupTable.writableDatabase.deleteAll(GroupTable.TABLE_NAME)
37+
groupTable.writableDatabase.deleteAll(GroupTable.MembershipTable.TABLE_NAME)
3838
}
3939

4040
@Test

app/src/androidTest/java/org/thoughtcrime/securesms/database/LogDatabaseTest.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import org.signal.core.util.forEach
1010
import org.signal.core.util.requireLong
1111
import org.signal.core.util.requireNonNullString
1212
import org.signal.core.util.select
13-
import org.signal.core.util.update
13+
import org.signal.core.util.updateAll
1414
import org.thoughtcrime.securesms.crash.CrashConfig
1515
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies
1616
import org.thoughtcrime.securesms.testing.assertIs
@@ -220,7 +220,7 @@ class LogDatabaseTest {
220220
)
221221

222222
db.writableDatabase
223-
.update(LogDatabase.CrashTable.TABLE_NAME)
223+
.updateAll(LogDatabase.CrashTable.TABLE_NAME)
224224
.values(LogDatabase.CrashTable.LAST_PROMPTED_AT to currentTime)
225225
.run()
226226

app/src/androidTest/java/org/thoughtcrime/securesms/testing/SignalDatabaseRule.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@ package org.thoughtcrime.securesms.testing
22

33
import org.junit.rules.TestWatcher
44
import org.junit.runner.Description
5+
import org.signal.core.util.deleteAll
56
import org.thoughtcrime.securesms.database.SignalDatabase
7+
import org.thoughtcrime.securesms.database.ThreadTable
68
import org.thoughtcrime.securesms.keyvalue.SignalStore
79
import org.whispersystems.signalservice.api.push.ServiceId.ACI
810
import org.whispersystems.signalservice.api.push.ServiceId.PNI
@@ -34,7 +36,8 @@ class SignalDatabaseRule(
3436

3537
private fun deleteAllThreads() {
3638
if (deleteAllThreadsOnEachRun) {
37-
SignalDatabase.threads.clearForTests()
39+
SignalDatabase.threads.deleteAllConversations()
40+
SignalDatabase.rawDatabase.deleteAll(ThreadTable.TABLE_NAME)
3841
}
3942
}
4043
}

app/src/main/java/org/thoughtcrime/securesms/backup/v2/database/AttachmentTableBackupExtensions.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55

66
package org.thoughtcrime.securesms.backup.v2.database
77

8-
import org.signal.core.util.delete
8+
import org.signal.core.util.deleteAll
99
import org.thoughtcrime.securesms.database.AttachmentTable
1010

1111
fun AttachmentTable.clearAllDataForBackupRestore() {
12-
writableDatabase.delete(AttachmentTable.TABLE_NAME).run()
12+
writableDatabase.deleteAll(AttachmentTable.TABLE_NAME)
1313
}

app/src/main/java/org/thoughtcrime/securesms/backup/v2/database/DistributionListTablesBackupExtensions.kt

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ package org.thoughtcrime.securesms.backup.v2.database
77

88
import okio.ByteString.Companion.toByteString
99
import org.signal.core.util.CursorUtil
10-
import org.signal.core.util.delete
10+
import org.signal.core.util.deleteAll
1111
import org.signal.core.util.logging.Log
1212
import org.signal.core.util.readToList
1313
import org.signal.core.util.requireLong
@@ -88,12 +88,10 @@ fun DistributionListTables.restoreFromBackup(dlist: BackupDistributionList, back
8888

8989
fun DistributionListTables.clearAllDataForBackupRestore() {
9090
writableDatabase
91-
.delete(DistributionListTables.ListTable.TABLE_NAME)
92-
.run()
91+
.deleteAll(DistributionListTables.ListTable.TABLE_NAME)
9392

9493
writableDatabase
95-
.delete(DistributionListTables.MembershipTable.TABLE_NAME)
96-
.run()
94+
.deleteAll(DistributionListTables.MembershipTable.TABLE_NAME)
9795
}
9896

9997
private fun DistributionListPrivacyMode.toBackupPrivacyMode(): BackupDistributionList.PrivacyMode {

app/src/main/java/org/thoughtcrime/securesms/backup/v2/database/RecipientTableBackupExtensions.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import android.database.Cursor
1010
import okio.ByteString.Companion.toByteString
1111
import org.signal.core.util.Base64
1212
import org.signal.core.util.SqlUtil
13-
import org.signal.core.util.delete
13+
import org.signal.core.util.deleteAll
1414
import org.signal.core.util.logging.Log
1515
import org.signal.core.util.nullIfBlank
1616
import org.signal.core.util.requireBoolean
@@ -155,7 +155,7 @@ fun RecipientTable.restoreSelfFromBackup(accountData: AccountData, selfId: Recip
155155
}
156156

157157
fun RecipientTable.clearAllDataForBackupRestore() {
158-
writableDatabase.delete(RecipientTable.TABLE_NAME).run()
158+
writableDatabase.deleteAll(RecipientTable.TABLE_NAME)
159159
SqlUtil.resetAutoIncrementValue(writableDatabase, RecipientTable.TABLE_NAME)
160160

161161
RecipientId.clearCache()

app/src/main/java/org/thoughtcrime/securesms/components/settings/app/changenumber/ChangeNumberRepository.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,7 @@ class ChangeNumberRepository(
216216
@WorkerThread
217217
fun changeLocalNumber(e164: String, pni: PNI): Single<Unit> {
218218
val oldStorageId: ByteArray? = Recipient.self().storageServiceId
219-
SignalDatabase.recipients.updateSelfPhone(e164, pni)
219+
SignalDatabase.recipients.updateSelfE164(e164, pni)
220220
val newStorageId: ByteArray? = Recipient.self().storageServiceId
221221

222222
if (e164 != SignalStore.account().requireE164() && MessageDigest.isEqual(oldStorageId, newStorageId)) {

app/src/main/java/org/thoughtcrime/securesms/database/AttachmentTable.kt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ import org.signal.core.util.SqlUtil.buildSingleCollectionQuery
3939
import org.signal.core.util.StreamUtil
4040
import org.signal.core.util.ThreadUtil
4141
import org.signal.core.util.delete
42+
import org.signal.core.util.deleteAll
4243
import org.signal.core.util.exists
4344
import org.signal.core.util.forEach
4445
import org.signal.core.util.groupBy
@@ -475,9 +476,7 @@ class AttachmentTable(
475476
fun deleteAllAttachments() {
476477
Log.d(TAG, "[deleteAllAttachments]")
477478

478-
writableDatabase
479-
.delete(TABLE_NAME)
480-
.run()
479+
writableDatabase.deleteAll(TABLE_NAME)
481480

482481
FileUtils.deleteDirectoryContents(context.getDir(DIRECTORY, Context.MODE_PRIVATE))
483482

app/src/main/java/org/thoughtcrime/securesms/database/CallTable.kt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import org.signal.core.util.IntSerializer
88
import org.signal.core.util.Serializer
99
import org.signal.core.util.SqlUtil
1010
import org.signal.core.util.delete
11+
import org.signal.core.util.deleteAll
1112
import org.signal.core.util.flatten
1213
import org.signal.core.util.insertInto
1314
import org.signal.core.util.logging.Log
@@ -1014,9 +1015,7 @@ class CallTable(context: Context, databaseHelper: SignalDatabase) : DatabaseTabl
10141015
@Discouraged("Using this method is generally considered an error. Utilize other deletion methods instead of this.")
10151016
fun deleteAllCalls() {
10161017
Log.w(TAG, "Deleting all calls from the local database.")
1017-
writableDatabase
1018-
.delete(TABLE_NAME)
1019-
.run()
1018+
writableDatabase.deleteAll(TABLE_NAME)
10201019
}
10211020

10221021
private fun getCallSelectionQuery(callId: Long, recipientId: RecipientId): SqlUtil.Query {

app/src/main/java/org/thoughtcrime/securesms/database/CdsTable.kt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import android.content.Context
55
import androidx.core.content.contentValuesOf
66
import org.signal.core.util.SqlUtil
77
import org.signal.core.util.delete
8+
import org.signal.core.util.deleteAll
89
import org.signal.core.util.logging.Log
910
import org.signal.core.util.requireNonNullString
1011
import org.signal.core.util.select
@@ -106,8 +107,6 @@ class CdsTable(context: Context, databaseHelper: SignalDatabase) : DatabaseTable
106107
* Wipes the entire table.
107108
*/
108109
fun clearAll() {
109-
writableDatabase
110-
.delete(TABLE_NAME)
111-
.run()
110+
writableDatabase.deleteAll(TABLE_NAME)
112111
}
113112
}

0 commit comments

Comments
 (0)