feat: implement device verification flow with new UI components and protocol handling
This commit is contained in:
@@ -14,8 +14,9 @@ import androidx.sqlite.db.SupportSQLiteDatabase
|
||||
MessageEntity::class,
|
||||
DialogEntity::class,
|
||||
BlacklistEntity::class,
|
||||
AvatarCacheEntity::class],
|
||||
version = 11,
|
||||
AvatarCacheEntity::class,
|
||||
AccountSyncTimeEntity::class],
|
||||
version = 12,
|
||||
exportSchema = false
|
||||
)
|
||||
abstract class RosettaDatabase : RoomDatabase() {
|
||||
@@ -24,6 +25,7 @@ abstract class RosettaDatabase : RoomDatabase() {
|
||||
abstract fun dialogDao(): DialogDao
|
||||
abstract fun blacklistDao(): BlacklistDao
|
||||
abstract fun avatarDao(): AvatarDao
|
||||
abstract fun syncTimeDao(): SyncTimeDao
|
||||
|
||||
companion object {
|
||||
@Volatile private var INSTANCE: RosettaDatabase? = null
|
||||
@@ -132,6 +134,20 @@ abstract class RosettaDatabase : RoomDatabase() {
|
||||
}
|
||||
}
|
||||
|
||||
private val MIGRATION_11_12 =
|
||||
object : Migration(11, 12) {
|
||||
override fun migrate(database: SupportSQLiteDatabase) {
|
||||
database.execSQL(
|
||||
"""
|
||||
CREATE TABLE IF NOT EXISTS accounts_sync_times (
|
||||
account TEXT NOT NULL PRIMARY KEY,
|
||||
last_sync INTEGER NOT NULL
|
||||
)
|
||||
"""
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
fun getDatabase(context: Context): RosettaDatabase {
|
||||
return INSTANCE
|
||||
?: synchronized(this) {
|
||||
@@ -151,7 +167,8 @@ abstract class RosettaDatabase : RoomDatabase() {
|
||||
MIGRATION_7_8,
|
||||
MIGRATION_8_9,
|
||||
MIGRATION_9_10,
|
||||
MIGRATION_10_11
|
||||
MIGRATION_10_11,
|
||||
MIGRATION_11_12
|
||||
)
|
||||
.fallbackToDestructiveMigration() // Для разработки - только
|
||||
// если миграция не
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
package com.rosetta.messenger.database
|
||||
|
||||
import androidx.room.ColumnInfo
|
||||
import androidx.room.Dao
|
||||
import androidx.room.Entity
|
||||
import androidx.room.Insert
|
||||
import androidx.room.OnConflictStrategy
|
||||
import androidx.room.PrimaryKey
|
||||
import androidx.room.Query
|
||||
|
||||
@Entity(tableName = "accounts_sync_times")
|
||||
data class AccountSyncTimeEntity(
|
||||
@PrimaryKey @ColumnInfo(name = "account") val account: String,
|
||||
@ColumnInfo(name = "last_sync") val lastSync: Long
|
||||
)
|
||||
|
||||
@Dao
|
||||
interface SyncTimeDao {
|
||||
@Query("SELECT last_sync FROM accounts_sync_times WHERE account = :account LIMIT 1")
|
||||
suspend fun getLastSync(account: String): Long?
|
||||
|
||||
@Insert(onConflict = OnConflictStrategy.REPLACE)
|
||||
suspend fun upsert(entity: AccountSyncTimeEntity)
|
||||
}
|
||||
Reference in New Issue
Block a user