Update regarding SDK change on verification data
This commit is contained in:
parent
049eb1de07
commit
5001a6fbe1
8 changed files with 105 additions and 48 deletions
|
|
@ -18,12 +18,12 @@ package io.element.android.libraries.matrix.impl.verification
|
|||
|
||||
import io.element.android.libraries.core.data.tryOrNull
|
||||
import io.element.android.libraries.matrix.api.sync.SyncState
|
||||
import io.element.android.libraries.matrix.api.verification.SessionVerificationData
|
||||
import io.element.android.libraries.matrix.api.verification.SessionVerificationService
|
||||
import io.element.android.libraries.matrix.api.verification.SessionVerifiedStatus
|
||||
import io.element.android.libraries.matrix.api.verification.VerificationEmoji
|
||||
import io.element.android.libraries.matrix.api.verification.VerificationFlowState
|
||||
import io.element.android.libraries.matrix.impl.sync.RustSyncService
|
||||
import kotlinx.collections.immutable.toImmutableList
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
import kotlinx.coroutines.flow.StateFlow
|
||||
|
|
@ -33,7 +33,8 @@ import kotlinx.coroutines.launch
|
|||
import org.matrix.rustcomponents.sdk.SessionVerificationController
|
||||
import org.matrix.rustcomponents.sdk.SessionVerificationControllerDelegate
|
||||
import org.matrix.rustcomponents.sdk.SessionVerificationControllerInterface
|
||||
import org.matrix.rustcomponents.sdk.SessionVerificationEmoji
|
||||
import org.matrix.rustcomponents.sdk.use
|
||||
import org.matrix.rustcomponents.sdk.SessionVerificationData as RustSessionVerificationData
|
||||
|
||||
class RustSessionVerificationService(
|
||||
private val syncService: RustSyncService,
|
||||
|
|
@ -105,12 +106,8 @@ class RustSessionVerificationService(
|
|||
updateVerificationStatus(isVerified = true)
|
||||
}
|
||||
|
||||
override fun didReceiveVerificationData(data: List<SessionVerificationEmoji>) {
|
||||
val emojis = data.map { emoji ->
|
||||
emoji.use { VerificationEmoji(it.code(), it.description()) }
|
||||
}
|
||||
.toImmutableList()
|
||||
_verificationFlowState.value = VerificationFlowState.ReceivedVerificationData(emojis)
|
||||
override fun didReceiveVerificationData(data: RustSessionVerificationData) {
|
||||
_verificationFlowState.value = VerificationFlowState.ReceivedVerificationData(data.map())
|
||||
}
|
||||
|
||||
// When the actual SAS verification starts
|
||||
|
|
@ -142,3 +139,28 @@ class RustSessionVerificationService(
|
|||
_sessionVerifiedStatus.value = newValue
|
||||
}
|
||||
}
|
||||
|
||||
private fun RustSessionVerificationData.map(): SessionVerificationData {
|
||||
return use { sessionVerificationData ->
|
||||
when (sessionVerificationData) {
|
||||
is RustSessionVerificationData.Emojis -> {
|
||||
SessionVerificationData.Emojis(
|
||||
emojis = sessionVerificationData.emojis.mapIndexed { index, emoji ->
|
||||
emoji.use { sessionVerificationEmoji ->
|
||||
VerificationEmoji(
|
||||
number = sessionVerificationData.indices[index].toInt(),
|
||||
emoji = sessionVerificationEmoji.symbol(),
|
||||
description = sessionVerificationEmoji.description(),
|
||||
)
|
||||
}
|
||||
},
|
||||
)
|
||||
}
|
||||
is RustSessionVerificationData.Decimals -> {
|
||||
SessionVerificationData.Decimals(
|
||||
decimals = sessionVerificationData.values.map { it.toInt() },
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue