feat(auth)!: Added AuthDevice Platform.

Migration: AuthDatabase.MIGRATION_5.
This commit is contained in:
Neil Marietta
2024-10-02 11:57:57 +00:00
committed by MargeBot
parent 743f1eb79a
commit 2b62a72242
11 changed files with 7047 additions and 3 deletions
@@ -202,7 +202,7 @@ abstract class AccountManagerDatabase :
companion object {
const val name = "db-account-manager"
const val version = 54
const val version = 55
val migrations = listOf(
AccountManagerDatabaseMigrations.MIGRATION_1_2,
@@ -258,6 +258,7 @@ abstract class AccountManagerDatabase :
AccountManagerDatabaseMigrations.MIGRATION_51_52,
AccountManagerDatabaseMigrations.MIGRATION_52_53,
AccountManagerDatabaseMigrations.MIGRATION_53_54,
AccountManagerDatabaseMigrations.MIGRATION_54_55,
)
fun databaseBuilder(context: Context): Builder<AccountManagerDatabase> =
@@ -380,4 +380,10 @@ object AccountManagerDatabaseMigrations {
AuthDatabase.MIGRATION_4.migrate(db)
}
}
val MIGRATION_54_55 = object : Migration(54, 55) {
override fun migrate(db: SupportSQLiteDatabase) {
AuthDatabase.MIGRATION_5.migrate(db)
}
}
}
@@ -22,6 +22,7 @@ import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
import me.proton.core.auth.domain.entity.AuthDevice
import me.proton.core.auth.domain.entity.AuthDeviceId
import me.proton.core.auth.domain.entity.AuthDevicePlatform
import me.proton.core.auth.domain.entity.AuthDeviceState
import me.proton.core.domain.entity.UserId
import me.proton.core.user.domain.entity.AddressId
@@ -42,6 +43,8 @@ data class AuthDeviceResponse(
val name: String,
@SerialName("LocalizedClientName")
val localizedClientName: String,
@SerialName("Platform")
val platform: String?,
@SerialName("CreateTime")
val createTime: Long,
@SerialName("ActivateTime")
@@ -61,6 +64,7 @@ data class AuthDeviceResponse(
deviceId = AuthDeviceId(id),
name = name,
localizedClientName = localizedClientName,
platform = AuthDevicePlatform.enumOf(platform),
createdAtUtcSeconds = createTime,
activatedAtUtcSeconds = activateTime,
rejectedAtUtcSeconds = rejectTime,
@@ -86,5 +86,15 @@ interface AuthDatabase : Database {
database.execSQL("CREATE INDEX IF NOT EXISTS `index_MemberDeviceEntity_addressId` ON `MemberDeviceEntity` (`addressId`)")
}
}
val MIGRATION_5 = object : DatabaseMigration {
override fun migrate(database: SupportSQLiteDatabase) {
database.addTableColumn(
table = "AuthDeviceEntity",
column = "platform",
type = "TEXT"
)
}
}
}
}
@@ -24,6 +24,7 @@ import androidx.room.Index
import me.proton.core.account.data.entity.AccountEntity
import me.proton.core.auth.domain.entity.AuthDevice
import me.proton.core.auth.domain.entity.AuthDeviceId
import me.proton.core.auth.domain.entity.AuthDevicePlatform
import me.proton.core.auth.domain.entity.AuthDeviceState
import me.proton.core.crypto.common.pgp.EncryptedMessage
import me.proton.core.domain.entity.UserId
@@ -51,6 +52,7 @@ data class AuthDeviceEntity(
val state: Int,
val name: String,
val localizedClientName: String,
val platform: String?,
val createdAtUtcSeconds: Long,
val activatedAtUtcSeconds: Long?,
val rejectedAtUtcSeconds: Long?,
@@ -65,6 +67,7 @@ fun AuthDeviceEntity.toAuthDevice() = AuthDevice(
state = AuthDeviceState.map[state] ?: AuthDeviceState.Inactive,
name = name,
localizedClientName = localizedClientName,
platform = AuthDevicePlatform.enumOf(platform),
createdAtUtcSeconds = createdAtUtcSeconds,
activatedAtUtcSeconds = activatedAtUtcSeconds,
rejectedAtUtcSeconds = rejectedAtUtcSeconds,
@@ -79,6 +82,7 @@ fun AuthDevice.toAuthDeviceEntity() = AuthDeviceEntity(
state = state.value,
name = name,
localizedClientName = localizedClientName,
platform = platform?.value,
createdAtUtcSeconds = createdAtUtcSeconds,
activatedAtUtcSeconds = activatedAtUtcSeconds,
rejectedAtUtcSeconds = rejectedAtUtcSeconds,
@@ -2,6 +2,7 @@ package me.proton.core.auth.domain.entity
import me.proton.core.crypto.common.pgp.EncryptedMessage
import me.proton.core.domain.entity.UserId
import me.proton.core.domain.type.StringEnum
import me.proton.core.user.domain.entity.AddressId
data class AuthDeviceId(val id: String)
@@ -13,6 +14,7 @@ data class AuthDevice(
val state: AuthDeviceState,
val name: String,
val localizedClientName: String,
val platform: StringEnum<AuthDevicePlatform>?,
val createdAtUtcSeconds: Long,
val activatedAtUtcSeconds: Long?,
val rejectedAtUtcSeconds: Long?,
@@ -25,9 +27,26 @@ enum class AuthDeviceState(val value: Int) {
Active(1),
PendingActivation(2),
PendingAdminActivation(3),
Rejected(4);
Rejected(4),
NoSession(5);
companion object {
val map = entries.associateBy { it.value }
}
}
enum class AuthDevicePlatform(val value: String) {
Android("Android"),
AndroidTv("AndroidTv"),
AppleTv("AppleTv"),
IOS("iOS"),
Linux("Linux"),
MacOS("macOS"),
Web("Web"),
Windows("Windows");
companion object {
val map = entries.associateBy { it.value }
fun enumOf(value: String?) = value?.let { StringEnum(it, map[it]) }
}
}
@@ -109,6 +109,7 @@ public class DeviceSecretViewModel @Inject constructor(
AuthDeviceState.Inactive -> emptyFlow()
AuthDeviceState.PendingActivation -> emptyFlow()
AuthDeviceState.PendingAdminActivation -> emptyFlow()
AuthDeviceState.NoSession -> emptyFlow()
AuthDeviceState.Active -> onDeviceActivated()
AuthDeviceState.Rejected -> onDeviceRejected()
}
File diff suppressed because it is too large Load Diff
@@ -202,7 +202,7 @@ abstract class AppDatabase :
companion object {
const val name = "db-account-manager"
const val version = 54
const val version = 55
val migrations = listOf(
AppDatabaseMigrations.MIGRATION_1_2,
@@ -258,6 +258,7 @@ abstract class AppDatabase :
AppDatabaseMigrations.MIGRATION_51_52,
AppDatabaseMigrations.MIGRATION_52_53,
AppDatabaseMigrations.MIGRATION_53_54,
AppDatabaseMigrations.MIGRATION_54_55,
)
fun buildDatabase(context: Context): AppDatabase =
@@ -381,4 +381,10 @@ object AppDatabaseMigrations {
AuthDatabase.MIGRATION_4.migrate(db)
}
}
val MIGRATION_54_55 = object : Migration(54, 55) {
override fun migrate(db: SupportSQLiteDatabase) {
AuthDatabase.MIGRATION_5.migrate(db)
}
}
}