mirror of
https://github.com/Novaloop-AG/element-x-android.git
synced 2026-11-02 03:06:14 +00:00
QrCodeScanEvents -> QrCodeScanEvent
This commit is contained in:
+3
-3
@@ -8,7 +8,7 @@
|
||||
|
||||
package io.element.android.features.login.impl.screens.qrcode.scan
|
||||
|
||||
sealed interface QrCodeScanEvents {
|
||||
data class QrCodeScanned(val code: ByteArray) : QrCodeScanEvents
|
||||
data object TryAgain : QrCodeScanEvents
|
||||
sealed interface QrCodeScanEvent {
|
||||
data class QrCodeScanned(val code: ByteArray) : QrCodeScanEvent
|
||||
data object TryAgain : QrCodeScanEvent
|
||||
}
|
||||
+3
-3
@@ -52,13 +52,13 @@ class QrCodeScanPresenter(
|
||||
authenticationAction.value = AsyncAction.Failure(it)
|
||||
}
|
||||
|
||||
fun handleEvent(event: QrCodeScanEvents) {
|
||||
fun handleEvent(event: QrCodeScanEvent) {
|
||||
when (event) {
|
||||
QrCodeScanEvents.TryAgain -> {
|
||||
QrCodeScanEvent.TryAgain -> {
|
||||
isScanning = true
|
||||
authenticationAction.value = AsyncAction.Uninitialized
|
||||
}
|
||||
is QrCodeScanEvents.QrCodeScanned -> {
|
||||
is QrCodeScanEvent.QrCodeScanned -> {
|
||||
isScanning = false
|
||||
coroutineScope.getQrCodeData(authenticationAction, event.code)
|
||||
}
|
||||
|
||||
+1
-1
@@ -14,5 +14,5 @@ import io.element.android.libraries.matrix.api.auth.qrlogin.MatrixQrCodeLoginDat
|
||||
data class QrCodeScanState(
|
||||
val isScanning: Boolean,
|
||||
val authenticationAction: AsyncAction<MatrixQrCodeLoginData>,
|
||||
val eventSink: (QrCodeScanEvents) -> Unit
|
||||
val eventSink: (QrCodeScanEvent) -> Unit
|
||||
)
|
||||
|
||||
+1
-1
@@ -46,7 +46,7 @@ open class QrCodeScanStatePreviewParam : PreviewParameterProvider<QrCodeScanStat
|
||||
fun aQrCodeScanState(
|
||||
isScanning: Boolean = true,
|
||||
authenticationAction: AsyncAction<MatrixQrCodeLoginData> = AsyncAction.Uninitialized,
|
||||
eventSink: (QrCodeScanEvents) -> Unit = {},
|
||||
eventSink: (QrCodeScanEvent) -> Unit = {},
|
||||
) = QrCodeScanState(
|
||||
isScanning = isScanning,
|
||||
authenticationAction = authenticationAction,
|
||||
|
||||
+2
-2
@@ -105,7 +105,7 @@ private fun Content(
|
||||
) {
|
||||
QrCodeCameraView(
|
||||
modifier = Modifier.fillMaxSize(),
|
||||
onScanQrCode = { state.eventSink.invoke(QrCodeScanEvents.QrCodeScanned(it)) },
|
||||
onScanQrCode = { state.eventSink.invoke(QrCodeScanEvent.QrCodeScanned(it)) },
|
||||
isScanning = state.isScanning,
|
||||
)
|
||||
}
|
||||
@@ -125,7 +125,7 @@ private fun ColumnScope.Buttons(
|
||||
.fillMaxWidth()
|
||||
.padding(bottom = 16.dp),
|
||||
onClick = {
|
||||
state.eventSink.invoke(QrCodeScanEvents.TryAgain)
|
||||
state.eventSink.invoke(QrCodeScanEvent.TryAgain)
|
||||
}
|
||||
)
|
||||
Column(
|
||||
|
||||
+3
-3
@@ -50,7 +50,7 @@ class QrCodeScanPresenterTest {
|
||||
)
|
||||
presenter.test {
|
||||
val initialState = awaitItem()
|
||||
initialState.eventSink(QrCodeScanEvents.QrCodeScanned(byteArrayOf()))
|
||||
initialState.eventSink(QrCodeScanEvent.QrCodeScanned(byteArrayOf()))
|
||||
assertThat(awaitItem().isScanning).isFalse()
|
||||
assertThat(awaitItem().authenticationAction.isLoading()).isTrue()
|
||||
assertThat(awaitItem().authenticationAction.isSuccess()).isTrue()
|
||||
@@ -65,14 +65,14 @@ class QrCodeScanPresenterTest {
|
||||
val presenter = createQrCodeScanPresenter(qrCodeLoginDataFactory = qrCodeLoginDataFactory)
|
||||
presenter.test {
|
||||
val initialState = awaitItem()
|
||||
initialState.eventSink(QrCodeScanEvents.QrCodeScanned(byteArrayOf()))
|
||||
initialState.eventSink(QrCodeScanEvent.QrCodeScanned(byteArrayOf()))
|
||||
assertThat(awaitItem().isScanning).isFalse()
|
||||
assertThat(awaitItem().authenticationAction.isLoading()).isTrue()
|
||||
|
||||
val errorState = awaitItem()
|
||||
assertThat(errorState.authenticationAction.isFailure()).isTrue()
|
||||
|
||||
errorState.eventSink(QrCodeScanEvents.TryAgain)
|
||||
errorState.eventSink(QrCodeScanEvent.TryAgain)
|
||||
assertThat(awaitItem().isScanning).isTrue()
|
||||
assertThat(awaitItem().authenticationAction.isUninitialized()).isTrue()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user