Introduce value class "DeviceId"
This commit is contained in:
parent
da2b98ff01
commit
626fa4e495
10 changed files with 35 additions and 10 deletions
|
|
@ -9,12 +9,13 @@ package io.element.android.features.preferences.impl.root
|
||||||
|
|
||||||
import io.element.android.features.logout.api.direct.DirectLogoutState
|
import io.element.android.features.logout.api.direct.DirectLogoutState
|
||||||
import io.element.android.libraries.designsystem.utils.snackbar.SnackbarMessage
|
import io.element.android.libraries.designsystem.utils.snackbar.SnackbarMessage
|
||||||
|
import io.element.android.libraries.matrix.api.core.DeviceId
|
||||||
import io.element.android.libraries.matrix.api.user.MatrixUser
|
import io.element.android.libraries.matrix.api.user.MatrixUser
|
||||||
|
|
||||||
data class PreferencesRootState(
|
data class PreferencesRootState(
|
||||||
val myUser: MatrixUser,
|
val myUser: MatrixUser,
|
||||||
val version: String,
|
val version: String,
|
||||||
val deviceId: String?,
|
val deviceId: DeviceId?,
|
||||||
val showSecureBackup: Boolean,
|
val showSecureBackup: Boolean,
|
||||||
val showSecureBackupBadge: Boolean,
|
val showSecureBackupBadge: Boolean,
|
||||||
val accountManagementUrl: String?,
|
val accountManagementUrl: String?,
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@ package io.element.android.features.preferences.impl.root
|
||||||
|
|
||||||
import io.element.android.features.logout.api.direct.aDirectLogoutState
|
import io.element.android.features.logout.api.direct.aDirectLogoutState
|
||||||
import io.element.android.libraries.designsystem.utils.snackbar.SnackbarMessage
|
import io.element.android.libraries.designsystem.utils.snackbar.SnackbarMessage
|
||||||
|
import io.element.android.libraries.matrix.api.core.DeviceId
|
||||||
import io.element.android.libraries.matrix.api.user.MatrixUser
|
import io.element.android.libraries.matrix.api.user.MatrixUser
|
||||||
import io.element.android.libraries.ui.strings.CommonStrings
|
import io.element.android.libraries.ui.strings.CommonStrings
|
||||||
|
|
||||||
|
|
@ -18,7 +19,7 @@ fun aPreferencesRootState(
|
||||||
) = PreferencesRootState(
|
) = PreferencesRootState(
|
||||||
myUser = myUser,
|
myUser = myUser,
|
||||||
version = "Version 1.1 (1)",
|
version = "Version 1.1 (1)",
|
||||||
deviceId = "ILAKNDNASDLK",
|
deviceId = DeviceId("ILAKNDNASDLK"),
|
||||||
showSecureBackup = true,
|
showSecureBackup = true,
|
||||||
showSecureBackupBadge = true,
|
showSecureBackupBadge = true,
|
||||||
accountManagementUrl = "aUrl",
|
accountManagementUrl = "aUrl",
|
||||||
|
|
|
||||||
|
|
@ -36,6 +36,7 @@ import io.element.android.libraries.designsystem.theme.components.Text
|
||||||
import io.element.android.libraries.designsystem.utils.CommonDrawables
|
import io.element.android.libraries.designsystem.utils.CommonDrawables
|
||||||
import io.element.android.libraries.designsystem.utils.snackbar.SnackbarHost
|
import io.element.android.libraries.designsystem.utils.snackbar.SnackbarHost
|
||||||
import io.element.android.libraries.designsystem.utils.snackbar.rememberSnackbarHostState
|
import io.element.android.libraries.designsystem.utils.snackbar.rememberSnackbarHostState
|
||||||
|
import io.element.android.libraries.matrix.api.core.DeviceId
|
||||||
import io.element.android.libraries.matrix.api.user.MatrixUser
|
import io.element.android.libraries.matrix.api.user.MatrixUser
|
||||||
import io.element.android.libraries.matrix.ui.components.MatrixUserProvider
|
import io.element.android.libraries.matrix.ui.components.MatrixUserProvider
|
||||||
import io.element.android.libraries.ui.strings.CommonStrings
|
import io.element.android.libraries.ui.strings.CommonStrings
|
||||||
|
|
@ -229,7 +230,7 @@ private fun ColumnScope.GeneralSection(
|
||||||
@Composable
|
@Composable
|
||||||
private fun ColumnScope.Footer(
|
private fun ColumnScope.Footer(
|
||||||
version: String,
|
version: String,
|
||||||
deviceId: String?,
|
deviceId: DeviceId?,
|
||||||
onClick: (() -> Unit)?,
|
onClick: (() -> Unit)?,
|
||||||
) {
|
) {
|
||||||
val text = remember(version, deviceId) {
|
val text = remember(version, deviceId) {
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@
|
||||||
|
|
||||||
package io.element.android.libraries.matrix.api
|
package io.element.android.libraries.matrix.api
|
||||||
|
|
||||||
|
import io.element.android.libraries.matrix.api.core.DeviceId
|
||||||
import io.element.android.libraries.matrix.api.core.ProgressCallback
|
import io.element.android.libraries.matrix.api.core.ProgressCallback
|
||||||
import io.element.android.libraries.matrix.api.core.RoomAlias
|
import io.element.android.libraries.matrix.api.core.RoomAlias
|
||||||
import io.element.android.libraries.matrix.api.core.RoomId
|
import io.element.android.libraries.matrix.api.core.RoomId
|
||||||
|
|
@ -41,7 +42,7 @@ import java.util.Optional
|
||||||
|
|
||||||
interface MatrixClient : Closeable {
|
interface MatrixClient : Closeable {
|
||||||
val sessionId: SessionId
|
val sessionId: SessionId
|
||||||
val deviceId: String
|
val deviceId: DeviceId
|
||||||
val userProfile: StateFlow<MatrixUser>
|
val userProfile: StateFlow<MatrixUser>
|
||||||
val roomListService: RoomListService
|
val roomListService: RoomListService
|
||||||
val mediaLoader: MatrixMediaLoader
|
val mediaLoader: MatrixMediaLoader
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,15 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2024 New Vector Ltd.
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
* Please see LICENSE in the repository root for full details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package io.element.android.libraries.matrix.api.core
|
||||||
|
|
||||||
|
import java.io.Serializable
|
||||||
|
|
||||||
|
@JvmInline
|
||||||
|
value class DeviceId(val value: String) : Serializable {
|
||||||
|
override fun toString(): String = value
|
||||||
|
}
|
||||||
|
|
@ -7,9 +7,11 @@
|
||||||
|
|
||||||
package io.element.android.libraries.matrix.api.oidc
|
package io.element.android.libraries.matrix.api.oidc
|
||||||
|
|
||||||
|
import io.element.android.libraries.matrix.api.core.DeviceId
|
||||||
|
|
||||||
sealed interface AccountManagementAction {
|
sealed interface AccountManagementAction {
|
||||||
data object Profile : AccountManagementAction
|
data object Profile : AccountManagementAction
|
||||||
data object SessionsList : AccountManagementAction
|
data object SessionsList : AccountManagementAction
|
||||||
data class SessionView(val deviceId: String) : AccountManagementAction
|
data class SessionView(val deviceId: DeviceId) : AccountManagementAction
|
||||||
data class SessionEnd(val deviceId: String) : AccountManagementAction
|
data class SessionEnd(val deviceId: DeviceId) : AccountManagementAction
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,7 @@ import io.element.android.libraries.androidutils.file.safeDelete
|
||||||
import io.element.android.libraries.core.coroutine.CoroutineDispatchers
|
import io.element.android.libraries.core.coroutine.CoroutineDispatchers
|
||||||
import io.element.android.libraries.core.coroutine.childScope
|
import io.element.android.libraries.core.coroutine.childScope
|
||||||
import io.element.android.libraries.matrix.api.MatrixClient
|
import io.element.android.libraries.matrix.api.MatrixClient
|
||||||
|
import io.element.android.libraries.matrix.api.core.DeviceId
|
||||||
import io.element.android.libraries.matrix.api.core.ProgressCallback
|
import io.element.android.libraries.matrix.api.core.ProgressCallback
|
||||||
import io.element.android.libraries.matrix.api.core.RoomAlias
|
import io.element.android.libraries.matrix.api.core.RoomAlias
|
||||||
import io.element.android.libraries.matrix.api.core.RoomId
|
import io.element.android.libraries.matrix.api.core.RoomId
|
||||||
|
|
@ -119,7 +120,7 @@ class RustMatrixClient(
|
||||||
sessionDelegate: RustClientSessionDelegate,
|
sessionDelegate: RustClientSessionDelegate,
|
||||||
) : MatrixClient {
|
) : MatrixClient {
|
||||||
override val sessionId: UserId = UserId(client.userId())
|
override val sessionId: UserId = UserId(client.userId())
|
||||||
override val deviceId: String = client.deviceId()
|
override val deviceId: DeviceId = DeviceId(client.deviceId())
|
||||||
override val sessionCoroutineScope = appCoroutineScope.childScope(dispatchers.main, "Session-$sessionId")
|
override val sessionCoroutineScope = appCoroutineScope.childScope(dispatchers.main, "Session-$sessionId")
|
||||||
|
|
||||||
private val innerRoomListService = syncService.roomListService()
|
private val innerRoomListService = syncService.roomListService()
|
||||||
|
|
|
||||||
|
|
@ -13,8 +13,8 @@ import org.matrix.rustcomponents.sdk.AccountManagementAction as RustAccountManag
|
||||||
fun AccountManagementAction.toRustAction(): RustAccountManagementAction {
|
fun AccountManagementAction.toRustAction(): RustAccountManagementAction {
|
||||||
return when (this) {
|
return when (this) {
|
||||||
AccountManagementAction.Profile -> RustAccountManagementAction.Profile
|
AccountManagementAction.Profile -> RustAccountManagementAction.Profile
|
||||||
is AccountManagementAction.SessionEnd -> RustAccountManagementAction.SessionEnd(deviceId)
|
is AccountManagementAction.SessionEnd -> RustAccountManagementAction.SessionEnd(deviceId.value)
|
||||||
is AccountManagementAction.SessionView -> RustAccountManagementAction.SessionView(deviceId)
|
is AccountManagementAction.SessionView -> RustAccountManagementAction.SessionView(deviceId.value)
|
||||||
AccountManagementAction.SessionsList -> RustAccountManagementAction.SessionsList
|
AccountManagementAction.SessionsList -> RustAccountManagementAction.SessionsList
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
package io.element.android.libraries.matrix.test
|
package io.element.android.libraries.matrix.test
|
||||||
|
|
||||||
import io.element.android.libraries.matrix.api.MatrixClient
|
import io.element.android.libraries.matrix.api.MatrixClient
|
||||||
|
import io.element.android.libraries.matrix.api.core.DeviceId
|
||||||
import io.element.android.libraries.matrix.api.core.ProgressCallback
|
import io.element.android.libraries.matrix.api.core.ProgressCallback
|
||||||
import io.element.android.libraries.matrix.api.core.RoomAlias
|
import io.element.android.libraries.matrix.api.core.RoomAlias
|
||||||
import io.element.android.libraries.matrix.api.core.RoomId
|
import io.element.android.libraries.matrix.api.core.RoomId
|
||||||
|
|
@ -58,7 +59,7 @@ import java.util.Optional
|
||||||
|
|
||||||
class FakeMatrixClient(
|
class FakeMatrixClient(
|
||||||
override val sessionId: SessionId = A_SESSION_ID,
|
override val sessionId: SessionId = A_SESSION_ID,
|
||||||
override val deviceId: String = "A_DEVICE_ID",
|
override val deviceId: DeviceId = A_DEVICE_ID,
|
||||||
override val sessionCoroutineScope: CoroutineScope = TestScope(),
|
override val sessionCoroutineScope: CoroutineScope = TestScope(),
|
||||||
private val userDisplayName: String? = A_USER_NAME,
|
private val userDisplayName: String? = A_USER_NAME,
|
||||||
private val userAvatarUrl: String? = AN_AVATAR_URL,
|
private val userAvatarUrl: String? = AN_AVATAR_URL,
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
package io.element.android.libraries.matrix.test
|
package io.element.android.libraries.matrix.test
|
||||||
|
|
||||||
import io.element.android.libraries.matrix.api.auth.MatrixHomeServerDetails
|
import io.element.android.libraries.matrix.api.auth.MatrixHomeServerDetails
|
||||||
|
import io.element.android.libraries.matrix.api.core.DeviceId
|
||||||
import io.element.android.libraries.matrix.api.core.EventId
|
import io.element.android.libraries.matrix.api.core.EventId
|
||||||
import io.element.android.libraries.matrix.api.core.RoomAlias
|
import io.element.android.libraries.matrix.api.core.RoomAlias
|
||||||
import io.element.android.libraries.matrix.api.core.RoomId
|
import io.element.android.libraries.matrix.api.core.RoomId
|
||||||
|
|
@ -47,6 +48,7 @@ val AN_EVENT_ID = EventId("\$anEventId")
|
||||||
val AN_EVENT_ID_2 = EventId("\$anEventId2")
|
val AN_EVENT_ID_2 = EventId("\$anEventId2")
|
||||||
val A_ROOM_ALIAS = RoomAlias("#alias1:domain")
|
val A_ROOM_ALIAS = RoomAlias("#alias1:domain")
|
||||||
val A_TRANSACTION_ID = TransactionId("aTransactionId")
|
val A_TRANSACTION_ID = TransactionId("aTransactionId")
|
||||||
|
val A_DEVICE_ID = DeviceId("ILAKNDNASDLK")
|
||||||
|
|
||||||
val A_UNIQUE_ID = UniqueId("aUniqueId")
|
val A_UNIQUE_ID = UniqueId("aUniqueId")
|
||||||
val A_UNIQUE_ID_2 = UniqueId("aUniqueId2")
|
val A_UNIQUE_ID_2 = UniqueId("aUniqueId2")
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue