Partial implementation of QR login logic

This commit is contained in:
Hugh Nimmo-Smith 2022-10-11 23:34:05 +01:00
parent de611ca81a
commit bfab07d716
2 changed files with 21 additions and 26 deletions

View file

@ -59,13 +59,28 @@ class QrCodeLoginViewModel @AssistedInject constructor(
}
private fun handleOnQrCodeScanned(action: QrCodeLoginAction.OnQrCodeScanned) {
if (isValidQrCode(action.qrCode)) {
setState {
copy(
connectionStatus = QrCodeLoginConnectionStatus.ConnectingToDevice
)
Timber.tag(TAG).d("Scanned code: ${action.qrCode}")
val rendezvous = Rendezvous.buildChannelFromCode(action.qrCode) { reason ->
Timber.tag(TAG).d("Rendezvous cancelled: $reason")
onFailed(reason)
}
setState {
copy(
connectionStatus = QrCodeLoginConnectionStatus.ConnectingToDevice
)
}
_viewEvents.post(QrCodeLoginViewEvents.NavigateToStatusScreen)
viewModelScope.launch(Dispatchers.IO) {
val confirmationCode = rendezvous.startAfterScanningCode()
Timber.tag(TAG).i("Established secure channel with checksum: $confirmationCode")
confirmationCode ?.let {
onConnectionEstablished(it)
}
_viewEvents.post(QrCodeLoginViewEvents.NavigateToStatusScreen)
rendezvous.completeOnNewDevice()
}
// TODO. UI test purpose. Fixme remove!

View file

@ -1,20 +0,0 @@
/*
* Copyright (c) 2022 New Vector Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package im.vector.app.features.voicebroadcast
/** Voice Broadcast State Event. */
const val STATE_ROOM_VOICE_BROADCAST_INFO = "io.element.voice_broadcast_info"