Update more libraries.
This commit is contained in:
parent
71d7238f3b
commit
31897b4c4b
21 changed files with 926 additions and 108 deletions
|
@ -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) {
|
||||
|
|
|
@ -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> {
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -8,5 +8,4 @@ import net.zetetic.database.sqlcipher.SQLiteDatabase;
|
|||
*/
|
||||
public interface SignalDatabaseOpenHelper {
|
||||
SQLiteDatabase getSqlCipherDatabase();
|
||||
String getDatabaseName();
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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 }
|
||||
}
|
||||
|
|
|
@ -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 }
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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 -->
|
||||
|
|
|
@ -28,7 +28,7 @@ class MmsDatabaseTest {
|
|||
execSQL(MessageTable.CREATE_TABLE)
|
||||
}
|
||||
|
||||
db = sqlCipher.writableDatabase
|
||||
db = sqlCipher.myWritableDatabase
|
||||
messageTable = MessageTable(ApplicationProvider.getApplicationContext(), sqlCipher)
|
||||
}
|
||||
|
||||
|
|
|
@ -27,7 +27,7 @@ class MmsSmsDatabaseTest {
|
|||
MessageTable.CREATE_INDEXS.forEach { execSQL(it) }
|
||||
}
|
||||
|
||||
db = sqlCipher.writableDatabase
|
||||
db = sqlCipher.myWritableDatabase
|
||||
messageTable = MessageTable(ApplicationProvider.getApplicationContext(), sqlCipher)
|
||||
}
|
||||
|
||||
|
|
|
@ -45,7 +45,7 @@ class NotificationProfileTablesTest {
|
|||
}
|
||||
}
|
||||
|
||||
db = sqlCipher.writableDatabase
|
||||
db = sqlCipher.myWritableDatabase
|
||||
database = NotificationProfileTables(ApplicationProvider.getApplicationContext(), sqlCipher)
|
||||
}
|
||||
|
||||
|
|
|
@ -31,7 +31,7 @@ class SmsDatabaseTest {
|
|||
}
|
||||
}
|
||||
|
||||
db = sqlCipher.writableDatabase
|
||||
db = sqlCipher.myWritableDatabase
|
||||
messageTable = MessageTable(ApplicationProvider.getApplicationContext(), sqlCipher)
|
||||
}
|
||||
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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 var version: Int
|
||||
get() = database.version
|
||||
set(value) {
|
||||
database.version = version
|
||||
}
|
||||
|
||||
override fun setVersion(version: Int) {
|
||||
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)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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()
|
||||
}
|
||||
|
||||
|
|
|
@ -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
Loading…
Add table
Reference in a new issue