Update more libraries.

This commit is contained in:
Greyson Parrelli 2024-12-20 21:24:45 -05:00
parent 71d7238f3b
commit 31897b4c4b
21 changed files with 926 additions and 108 deletions

View file

@ -291,7 +291,7 @@ class RemoteBackupsSettingsFragment : ComposeFragment() {
private inner class AuthListener : BiometricPrompt.AuthenticationCallback() {
override fun onAuthenticationFailed() {
Log.w(TAG, "onAuthenticationFailed")
Toast.makeText(requireContext(), androidx.media3.session.R.string.authentication_required, Toast.LENGTH_SHORT).show()
Toast.makeText(requireContext(), R.string.RemoteBackupsSettingsFragment__authenticatino_required, Toast.LENGTH_SHORT).show()
}
override fun onAuthenticationSucceeded(result: BiometricPrompt.AuthenticationResult) {

View file

@ -455,7 +455,7 @@ class CallLinkTable(context: Context, databaseHelper: SignalDatabase) : Database
$limitOffset
""".trimIndent()
return readableDatabase.query(statement, searchFilter?.whereArgs)
return readableDatabase.query(statement, searchFilter?.whereArgs ?: arrayOf())
}
private object CallLinkSerializer : Serializer<CallLink, ContentValues> {

View file

@ -190,28 +190,26 @@ open class SignalDatabase(private val context: Application, databaseSecret: Data
Log.i(TAG, "Upgrade complete. Took " + (System.currentTimeMillis() - startTime) + " ms.")
}
override fun getReadableDatabase(): net.zetetic.database.sqlcipher.SQLiteDatabase {
throw UnsupportedOperationException("Call getSignalReadableDatabase() instead!")
}
override val readableDatabase: net.zetetic.database.sqlcipher.SQLiteDatabase
get() = throw UnsupportedOperationException("Call getSignalReadableDatabase() instead!")
override fun getWritableDatabase(): net.zetetic.database.sqlcipher.SQLiteDatabase {
throw UnsupportedOperationException("Call getSignalWritableDatabase() instead!")
}
override val writableDatabase: net.zetetic.database.sqlcipher.SQLiteDatabase
get() = throw UnsupportedOperationException("Call getSignalWritableDatabase() instead!")
open val rawReadableDatabase: net.zetetic.database.sqlcipher.SQLiteDatabase
get() = super.getReadableDatabase()
get() = super.readableDatabase
open val rawWritableDatabase: net.zetetic.database.sqlcipher.SQLiteDatabase
get() = super.getWritableDatabase()
get() = super.writableDatabase
open val signalReadableDatabase: SQLiteDatabase
get() = SQLiteDatabase(super.getReadableDatabase())
get() = SQLiteDatabase(super.readableDatabase)
open val signalWritableDatabase: SQLiteDatabase
get() = SQLiteDatabase(super.getWritableDatabase())
get() = SQLiteDatabase(super.writableDatabase)
override fun getSqlCipherDatabase(): net.zetetic.database.sqlcipher.SQLiteDatabase {
return super.getWritableDatabase()
return super.writableDatabase
}
open fun markCurrent(db: net.zetetic.database.sqlcipher.SQLiteDatabase) {
@ -299,7 +297,7 @@ open class SignalDatabase(private val context: Application, databaseSecret: Data
database.setForeignKeyConstraintsEnabled(false)
database.beginTransaction()
try {
instance!!.onUpgrade(database, database.getVersion(), -1)
instance!!.onUpgrade(database, database.version, -1)
instance!!.markCurrent(database)
instance!!.messageTable.deleteAbandonedMessages()
instance!!.messageTable.trimEntriesForExpiredMessages()

View file

@ -8,5 +8,4 @@ import net.zetetic.database.sqlcipher.SQLiteDatabase;
*/
public interface SignalDatabaseOpenHelper {
SQLiteDatabase getSqlCipherDatabase();
String getDatabaseName();
}

View file

@ -22,7 +22,7 @@ object V162_ThreadUnreadSelfMentionCountFixup : SignalDatabaseMigration {
@Suppress("SameParameterValue")
private fun columnMissing(db: SupportSQLiteDatabase, table: String, column: String): Boolean {
db.query("PRAGMA table_info($table)", null).use { cursor ->
db.query("PRAGMA table_info($table)", arrayOf()).use { cursor ->
val nameColumnIndex = cursor.getColumnIndexOrThrow("name")
while (cursor.moveToNext()) {
val name = cursor.getString(nameColumnIndex)

View file

@ -28,7 +28,7 @@ object V163_RemoteMegaphoneSnoozeSupportMigration : SignalDatabaseMigration {
}
private fun columnMissing(db: SupportSQLiteDatabase, column: String): Boolean {
db.query("PRAGMA table_info(remote_megaphone)", null).use { cursor ->
db.query("PRAGMA table_info(remote_megaphone)", arrayOf()).use { cursor ->
val nameColumnIndex = cursor.getColumnIndexOrThrow("name")
while (cursor.moveToNext()) {
val name = cursor.getString(nameColumnIndex)

View file

@ -63,7 +63,7 @@ object V186_ForeignKeyIndicesMigration : SignalDatabaseMigration {
}
private fun columnExists(db: SQLiteDatabase, table: String, column: String): Boolean {
return db.query("PRAGMA table_info($table)", null)
return db.query("PRAGMA table_info($table)", arrayOf())
.readToList { it.requireNonNullString("name") }
.any { it == column }
}

View file

@ -342,7 +342,7 @@ object V188_FixMessageRecipientsAndEditMessageMigration : SignalDatabaseMigratio
}
private fun columnExists(db: SQLiteDatabase, table: String, column: String): Boolean {
return db.query("PRAGMA table_info($table)", null)
return db.query("PRAGMA table_info($table)", arrayOf())
.readToList { it.requireNonNullString("name") }
.any { it == column }
}

View file

@ -26,7 +26,7 @@ object V203_PreKeyStaleTimestamp : SignalDatabaseMigration {
}
private fun columnExists(db: SupportSQLiteDatabase, table: String, column: String): Boolean {
db.query("PRAGMA table_info($table)", null).use { cursor ->
db.query("PRAGMA table_info($table)", arrayOf()).use { cursor ->
val nameColumnIndex = cursor.getColumnIndexOrThrow("name")
while (cursor.moveToNext()) {
val name = cursor.getString(nameColumnIndex)

View file

@ -7663,6 +7663,8 @@
<!-- RemoteBackupsSettingsFragment -->
<!-- Displayed on the title bar -->
<string name="RemoteBackupsSettingsFragment__signal_backups">Signal Backups</string>
<!-- Text shown in a popup indicating that the user needs to enter their screen lock -->
<string name="RemoteBackupsSettingsFragment__authenticatino_required">Authentication required</string>
<!-- Row label to launch payment history screen -->
<string name="RemoteBackupsSettingsFragment__payment_history">Payment history</string>
<!-- Section header for backup information -->

View file

@ -28,7 +28,7 @@ class MmsDatabaseTest {
execSQL(MessageTable.CREATE_TABLE)
}
db = sqlCipher.writableDatabase
db = sqlCipher.myWritableDatabase
messageTable = MessageTable(ApplicationProvider.getApplicationContext(), sqlCipher)
}

View file

@ -27,7 +27,7 @@ class MmsSmsDatabaseTest {
MessageTable.CREATE_INDEXS.forEach { execSQL(it) }
}
db = sqlCipher.writableDatabase
db = sqlCipher.myWritableDatabase
messageTable = MessageTable(ApplicationProvider.getApplicationContext(), sqlCipher)
}

View file

@ -45,7 +45,7 @@ class NotificationProfileTablesTest {
}
}
db = sqlCipher.writableDatabase
db = sqlCipher.myWritableDatabase
database = NotificationProfileTables(ApplicationProvider.getApplicationContext(), sqlCipher)
}

View file

@ -31,7 +31,7 @@ class SmsDatabaseTest {
}
}
db = sqlCipher.writableDatabase
db = sqlCipher.myWritableDatabase
messageTable = MessageTable(ApplicationProvider.getApplicationContext(), sqlCipher)
}

View file

@ -13,8 +13,8 @@ import net.zetetic.database.sqlcipher.SQLiteDatabase as SQLCipherSQLiteDatabase
*/
class ProxySQLCipherOpenHelper(
context: Application,
val readableDatabase: AndroidSQLiteDatabase,
val writableDatabase: AndroidSQLiteDatabase
val myReadableDatabase: AndroidSQLiteDatabase,
val myWritableDatabase: AndroidSQLiteDatabase
) : SignalDatabase(context, DatabaseSecret(ByteArray(32).apply { SecureRandom().nextBytes(this) }), AttachmentSecret()) {
constructor(context: Application, testOpenHelper: TestSQLiteOpenHelper) : this(context, testOpenHelper.readableDatabase, testOpenHelper.writableDatabase)
@ -23,9 +23,8 @@ class ProxySQLCipherOpenHelper(
throw UnsupportedOperationException()
}
override fun getDatabaseName(): String {
throw UnsupportedOperationException()
}
override val databaseName: String
get() = throw UnsupportedOperationException()
override fun setWriteAheadLoggingEnabled(enabled: Boolean) {
throw UnsupportedOperationException()
@ -55,13 +54,11 @@ class ProxySQLCipherOpenHelper(
throw UnsupportedOperationException()
}
override fun getReadableDatabase(): SQLCipherSQLiteDatabase {
throw UnsupportedOperationException()
}
override val readableDatabase: SQLCipherSQLiteDatabase
get() = throw UnsupportedOperationException()
override fun getWritableDatabase(): SQLCipherSQLiteDatabase {
throw UnsupportedOperationException()
}
override val writableDatabase: SQLCipherSQLiteDatabase
get() = throw UnsupportedOperationException()
override val rawReadableDatabase: net.zetetic.database.sqlcipher.SQLiteDatabase
get() = throw UnsupportedOperationException()
@ -70,10 +67,10 @@ class ProxySQLCipherOpenHelper(
get() = throw UnsupportedOperationException()
override val signalReadableDatabase: org.thoughtcrime.securesms.database.SQLiteDatabase
get() = ProxySignalSQLiteDatabase(readableDatabase)
get() = ProxySignalSQLiteDatabase(myReadableDatabase)
override val signalWritableDatabase: org.thoughtcrime.securesms.database.SQLiteDatabase
get() = ProxySignalSQLiteDatabase(writableDatabase)
get() = ProxySignalSQLiteDatabase(myWritableDatabase)
override fun getSqlCipherDatabase(): SQLCipherSQLiteDatabase {
throw UnsupportedOperationException()

View file

@ -51,7 +51,7 @@ class ProxySignalSQLiteDatabase(private val database: AndroidSQLiteDatabase) : S
return database.queryWithFactory(null, distinct, table, columns, selection, selectionArgs, groupBy, having, orderBy, limit)
}
override fun query(query: SupportSQLiteQuery): Cursor? {
override fun query(query: SupportSQLiteQuery): Cursor {
val converted = query.toAndroidQuery()
return database.rawQuery(converted.where, converted.whereArgs)
}
@ -112,7 +112,7 @@ class ProxySignalSQLiteDatabase(private val database: AndroidSQLiteDatabase) : S
return database.updateWithOnConflict(table, values, whereClause, whereArgs, conflictAlgorithm)
}
override fun execSQL(sql: String?) {
override fun execSQL(sql: String) {
database.execSQL(sql)
}
@ -120,7 +120,7 @@ class ProxySignalSQLiteDatabase(private val database: AndroidSQLiteDatabase) : S
database.execSQL(sql)
}
override fun execSQL(sql: String, bindArgs: Array<out Any>) {
override fun execSQL(sql: String, bindArgs: Array<out Any?>) {
database.execSQL(sql, bindArgs)
}
@ -132,9 +132,8 @@ class ProxySignalSQLiteDatabase(private val database: AndroidSQLiteDatabase) : S
throw UnsupportedOperationException()
}
override fun isWriteAheadLoggingEnabled(): Boolean {
throw UnsupportedOperationException()
}
override val isWriteAheadLoggingEnabled: Boolean
get() = throw UnsupportedOperationException()
override fun setForeignKeyConstraintsEnabled(enable: Boolean) {
database.setForeignKeyConstraintsEnabled(enable)
@ -180,9 +179,8 @@ class ProxySignalSQLiteDatabase(private val database: AndroidSQLiteDatabase) : S
return database.inTransaction()
}
override fun isDbLockedByCurrentThread(): Boolean {
return database.isDbLockedByCurrentThread
}
override val isDbLockedByCurrentThread: Boolean
get() = database.isDbLockedByCurrentThread
@Suppress("DEPRECATION")
override fun isDbLockedByOtherThreads(): Boolean {
@ -197,47 +195,40 @@ class ProxySignalSQLiteDatabase(private val database: AndroidSQLiteDatabase) : S
return database.yieldIfContendedSafely(sleepAfterYieldDelay)
}
override fun getVersion(): Int {
return database.version
}
override fun setVersion(version: Int) {
override var version: Int
get() = database.version
set(value) {
database.version = version
}
override fun getMaximumSize(): Long {
return database.maximumSize
}
override val maximumSize: Long
get() = database.maximumSize
override fun setMaximumSize(numBytes: Long): Long {
return database.setMaximumSize(numBytes)
}
override fun getPageSize(): Long {
return database.pageSize
override var pageSize: Long
get() = database.pageSize
set(value) {
database.pageSize = value
}
override fun setPageSize(numBytes: Long) {
database.pageSize = numBytes
}
override fun compileStatement(sql: String?): SQLCipherSQLiteStatement {
override fun compileStatement(sql: String): SQLCipherSQLiteStatement {
throw UnsupportedOperationException()
}
override fun isReadOnly(): Boolean {
return database.isReadOnly
}
override val isReadOnly: Boolean
get() = database.isReadOnly
override fun isOpen(): Boolean {
return database.isOpen
}
override val isOpen: Boolean
get() = database.isOpen
override fun needUpgrade(newVersion: Int): Boolean {
return database.needUpgrade(newVersion)
}
override fun setLocale(locale: Locale?) {
override fun setLocale(locale: Locale) {
database.setLocale(locale)
}
}

View file

@ -120,7 +120,7 @@ fun SupportSQLiteDatabase.getForeignKeys(): List<ForeignKeyConstraint> {
}
fun SupportSQLiteDatabase.areForeignKeyConstraintsEnabled(): Boolean {
return this.query("PRAGMA foreign_keys", null).use { cursor ->
return this.query("PRAGMA foreign_keys", arrayOf()).use { cursor ->
cursor.moveToFirst() && cursor.getInt(0) != 0
}
}
@ -508,7 +508,7 @@ class ExistsBuilderPart1(
}
fun run(): Boolean {
return db.query("SELECT EXISTS(SELECT 1 FROM $tableName)", null).use { cursor ->
return db.query("SELECT EXISTS(SELECT 1 FROM $tableName)", arrayOf()).use { cursor ->
cursor.moveToFirst() && cursor.getInt(0) == 1
}
}

View file

@ -43,7 +43,7 @@ object SqlUtil {
* IMPORTANT: Due to how connection pooling is handled in the app, the only way to have this return useful numbers is to call it within a transaction.
*/
fun getTotalChanges(db: SupportSQLiteDatabase): Long {
return db.query("SELECT total_changes()", null).readToSingleLong()
return db.query("SELECT total_changes()", arrayOf()).readToSingleLong()
}
@JvmStatic
@ -120,7 +120,7 @@ object SqlUtil {
@JvmStatic
fun isEmpty(db: SupportSQLiteDatabase, table: String): Boolean {
db.query("SELECT COUNT(*) FROM $table", null).use { cursor ->
db.query("SELECT COUNT(*) FROM $table", arrayOf()).use { cursor ->
return if (cursor.moveToFirst()) {
cursor.getInt(0) == 0
} else {
@ -131,7 +131,7 @@ object SqlUtil {
@JvmStatic
fun columnExists(db: SupportSQLiteDatabase, table: String, column: String): Boolean {
db.query("PRAGMA table_info($table)", null).use { cursor ->
db.query("PRAGMA table_info($table)", arrayOf()).use { cursor ->
val nameColumnIndex = cursor.getColumnIndexOrThrow("name")
while (cursor.moveToNext()) {
val name = cursor.getString(nameColumnIndex)

View file

@ -31,11 +31,11 @@ private class CapturingSqliteProgram(count: Int) : SupportSQLiteProgram {
args[index - 1] = value.toString()
}
override fun bindString(index: Int, value: String?) {
override fun bindString(index: Int, value: String) {
args[index - 1] = value
}
override fun bindBlob(index: Int, value: ByteArray?) {
override fun bindBlob(index: Int, value: ByteArray) {
throw UnsupportedOperationException()
}

View file

@ -7,7 +7,7 @@ androidx-activity = "1.9.3"
androidx-camera = "1.4.1"
androidx-fragment = "1.8.5"
androidx-lifecycle = "2.8.7"
androidx-media3 = "1.3.1"
androidx-media3 = "1.5.1"
androidx-navigation = "2.8.5"
androidx-window = "1.3.0"
glide = "4.15.1"
@ -36,23 +36,23 @@ compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "
gradle = { module = "com.android.tools.build:gradle", version.ref = "gradle" }
android-library = { module = "com.android.library:com.android.library.gradle.plugin", version.ref = "android-gradle-plugin" }
android-application = { module = "com.android.application:com.android.application.gradle.plugin", version.ref = "android-gradle-plugin" }
androidx-benchmark-gradle-plugin = "androidx.benchmark:benchmark-gradle-plugin:1.1.0-beta04"
androidx-benchmark-gradle-plugin = "androidx.benchmark:benchmark-gradle-plugin:1.3.3"
# Compose
androidx-compose-bom = "androidx.compose:compose-bom:2024.09.00"
androidx-compose-bom = "androidx.compose:compose-bom:2024.12.01"
androidx-compose-material3 = { module = "androidx.compose.material3:material3" }
androidx-compose-ui-tooling-preview = { module = "androidx.compose.ui:ui-tooling-preview" }
androidx-compose-ui-tooling-core = { module = "androidx.compose.ui:ui-tooling" }
androidx-compose-ui-test-manifest = { module = "androidx.compose.ui:ui-test-manifest" }
androidx-compose-runtime-livedata = { module = "androidx.compose.runtime:runtime-livedata" }
androidx-compose-rxjava3 = "androidx.compose.runtime:runtime-rxjava3:1.4.2"
androidx-compose-rxjava3 = "androidx.compose.runtime:runtime-rxjava3:1.7.6"
# Accompanist
accompanist-permissions = { module = "com.google.accompanist:accompanist-permissions", version.ref = "accompanist" }
accompanist-drawablepainter = "com.google.accompanist:accompanist-drawablepainter:0.36.0"
# Desugaring
android-tools-desugar = "com.android.tools:desugar_jdk_libs:1.1.6"
android-tools-desugar = "com.android.tools:desugar_jdk_libs:2.1.3"
# Kotlin
kotlin-stdlib-jdk8 = { module = "org.jetbrains.kotlin:kotlin-stdlib-jdk8", version.ref = "kotlin" }
@ -60,27 +60,27 @@ kotlin-reflect = { module = "org.jetbrains.kotlin:kotlin-reflect", version.ref =
kotlin-gradle-plugin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin" }
kotlinx-coroutines-core = "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0"
kotlinx-coroutines-core-jvm = "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.9.0"
kotlinx-coroutines-play-services = "org.jetbrains.kotlinx:kotlinx-coroutines-play-services:1.8.1"
kotlinx-coroutines-rx3 = "org.jetbrains.kotlinx:kotlinx-coroutines-rx3:1.3.9"
kotlinx-coroutines-play-services = "org.jetbrains.kotlinx:kotlinx-coroutines-play-services:1.9.0"
kotlinx-coroutines-rx3 = "org.jetbrains.kotlinx:kotlinx-coroutines-rx3:1.9.0"
ktlint = { module = "org.jlleitschuh.gradle:ktlint-gradle", version.ref = "ktlint" }
ktlint-twitter-compose = "com.twitter.compose.rules:ktlint:0.0.26"
# Android X
androidx-activity-compose = { module = "androidx.activity:activity-compose", version.ref = "androidx-activity" }
androidx-appcompat = { module = "androidx.appcompat:appcompat", version.ref = "androidx-appcompat" }
androidx-core-ktx = "androidx.core:core-ktx:1.12.0"
androidx-core-ktx = "androidx.core:core-ktx:1.15.0"
androidx-fragment-ktx = { module = "androidx.fragment:fragment-ktx", version.ref = "androidx-fragment" }
androidx-fragment-testing = { module = "androidx.fragment:fragment-testing", version.ref = "androidx-fragment" }
androidx-annotation = "androidx.annotation:annotation:1.4.0"
androidx-constraintlayout = "androidx.constraintlayout:constraintlayout:2.1.4"
androidx-annotation = "androidx.annotation:annotation:1.9.1"
androidx-constraintlayout = "androidx.constraintlayout:constraintlayout:2.2.0"
androidx-window-window = { module = "androidx.window:window", version.ref = "androidx-window" }
androidx-window-java = { module = "androidx.window:window-java", version.ref = "androidx-window" }
androidx-recyclerview = "androidx.recyclerview:recyclerview:1.3.1"
androidx-recyclerview = "androidx.recyclerview:recyclerview:1.3.2"
androidx-legacy-support = "androidx.legacy:legacy-support-v13:1.0.0"
androidx-legacy-preference = "androidx.legacy:legacy-preference-v14:1.0.0"
androidx-preference = "androidx.preference:preference:1.0.0"
androidx-preference = "androidx.preference:preference:1.2.1"
androidx-gridlayout = "androidx.gridlayout:gridlayout:1.0.0"
androidx-exifinterface = "androidx.exifinterface:exifinterface:1.3.3"
androidx-exifinterface = "androidx.exifinterface:exifinterface:1.3.7"
androidx-media3-exoplayer = { module = "androidx.media3:media3-exoplayer", version.ref = "androidx-media3" }
androidx-media3-session = { module = "androidx.media3:media3-session", version.ref = "androidx-media3" }
androidx-media3-ui = { module = "androidx.media3:media3-ui", version.ref = "androidx-media3" }
@ -101,36 +101,36 @@ androidx-camera-camera2 = { module = "androidx.camera:camera-camera2", version.r
androidx-camera-extensions = { module = "androidx.camera:camera-extensions", version.ref = "androidx-camera" }
androidx-camera-lifecycle = { module = "androidx.camera:camera-lifecycle", version.ref = "androidx-camera" }
androidx-camera-view = { module = "androidx.camera:camera-view", version.ref = "androidx-camera" }
androidx-concurrent-futures = "androidx.concurrent:concurrent-futures:1.0.0"
androidx-autofill = "androidx.autofill:autofill:1.0.0"
androidx-concurrent-futures = "androidx.concurrent:concurrent-futures:1.2.0"
androidx-autofill = "androidx.autofill:autofill:1.1.0"
androidx-biometric = "androidx.biometric:biometric:1.1.0"
androidx-sharetarget = "androidx.sharetarget:sharetarget:1.2.0-rc02"
androidx-sqlite = "androidx.sqlite:sqlite:2.1.0"
androidx-profileinstaller = "androidx.profileinstaller:profileinstaller:1.2.2"
androidx-sharetarget = "androidx.sharetarget:sharetarget:1.2.0"
androidx-sqlite = "androidx.sqlite:sqlite:2.4.0"
androidx-profileinstaller = "androidx.profileinstaller:profileinstaller:1.4.1"
androidx-asynclayoutinflater = "androidx.asynclayoutinflater:asynclayoutinflater:1.1.0-alpha01"
androidx-asynclayoutinflater-appcompat = "androidx.asynclayoutinflater:asynclayoutinflater-appcompat:1.1.0-alpha01"
androidx-emoji2 = "androidx.emoji2:emoji2:1.4.0"
androidx-documentfile = "androidx.documentfile:documentfile:1.0.0"
android-billing = "com.android.billingclient:billing-ktx:7.0.0"
androidx-emoji2 = "androidx.emoji2:emoji2:1.5.0"
androidx-documentfile = "androidx.documentfile:documentfile:1.0.1"
android-billing = "com.android.billingclient:billing-ktx:7.1.1"
# Billing
material-material = "com.google.android.material:material:1.8.0"
material-material = "com.google.android.material:material:1.12.0"
# Google
google-libphonenumber = "com.googlecode.libphonenumber:libphonenumber:8.13.50"
google-play-services-maps = "com.google.android.gms:play-services-maps:18.2.0"
google-play-services-auth = "com.google.android.gms:play-services-auth:21.0.0"
google-play-services-wallet = "com.google.android.gms:play-services-wallet:19.2.1"
google-play-services-maps = "com.google.android.gms:play-services-maps:19.0.0"
google-play-services-auth = "com.google.android.gms:play-services-auth:21.3.0"
google-play-services-wallet = "com.google.android.gms:play-services-wallet:19.4.0"
google-zxing-android-integration = "com.google.zxing:android-integration:3.3.0"
google-zxing-core = "com.google.zxing:core:3.4.1"
google-ez-vcard = "com.googlecode.ez-vcard:ez-vcard:0.9.11"
google-jsr305 = "com.google.code.findbugs:jsr305:3.0.2"
google-guava-android = "com.google.guava:guava:30.0-android"
google-guava-android = "com.google.guava:guava:33.3.1-android"
google-flexbox = "com.google.android.flexbox:flexbox:3.0.0"
com-google-devtools-ksp-gradle-plugin = "com.google.devtools.ksp:com.google.devtools.ksp.gradle.plugin:2.1.0-1.0.29"
# Firebase
firebase-messaging = "com.google.firebase:firebase-messaging:23.1.2"
firebase-messaging = "com.google.firebase:firebase-messaging:24.1.0"
# 1st Party
libsignal-client = { module = "org.signal:libsignal-client", version.ref = "libsignal-client" }
@ -142,10 +142,10 @@ signal-android-database-sqlcipher = "org.signal:sqlcipher-android:4.6.0-S1"
# Third Party
greenrobot-eventbus = "org.greenrobot:eventbus:3.0.0"
jackson-core = "com.fasterxml.jackson.core:jackson-databind:2.9.9.2"
jackson-core = "com.fasterxml.jackson.core:jackson-databind:2.12.0"
jackson-module-kotlin = "com.fasterxml.jackson.module:jackson-module-kotlin:2.12.0"
square-okhttp3 = "com.squareup.okhttp3:okhttp:4.12.0"
square-okio = "com.squareup.okio:okio:3.6.0"
square-okio = "com.squareup.okio:okio:3.9.0"
square-leakcanary = "com.squareup.leakcanary:leakcanary-android:2.7"
rxjava3-rxjava = "io.reactivex.rxjava3:rxjava:3.0.13"
rxjava3-rxandroid = "io.reactivex.rxjava3:rxandroid:3.0.0"
@ -162,7 +162,7 @@ materialish-progress = "com.pnikosis:materialish-progress:1.7"
subsampling-scale-image-view = "com.davemorrissey.labs:subsampling-scale-image-view-androidx:3.10.0"
android-tooltips = "com.tomergoldst.android:tooltips:1.0.6"
stream = "com.annimon:stream:1.1.8"
lottie = "com.airbnb.android:lottie:5.2.0"
lottie = "com.airbnb.android:lottie:6.4.0"
lottie-compose = "com.airbnb.android:lottie-compose:6.4.0"
dnsjava = "dnsjava:dnsjava:2.1.9"
nanohttpd-webserver = { module = "org.nanohttpd:nanohttpd-webserver", version.ref = "nanohttpd" }

File diff suppressed because it is too large Load diff