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