mirror of
https://github.com/ProtonMail/protoncore_android.git
synced 2026-06-14 09:54:49 +00:00
feat(auth)!: Added AuthDevice Platform.
Migration: AuthDatabase.MIGRATION_5.
This commit is contained in:
+3496
File diff suppressed because it is too large
Load Diff
+2
-1
@@ -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> =
|
||||
|
||||
+6
@@ -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]) }
|
||||
}
|
||||
}
|
||||
|
||||
+1
@@ -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 =
|
||||
|
||||
+6
@@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user