mirror of
https://github.com/element-hq/element-android
synced 2024-11-27 11:59:12 +03:00
Revert "Revert "Partial implementation of QR login logic""
This reverts commit e305478dda
.
This commit is contained in:
parent
370652c04b
commit
f04f0e6fac
5 changed files with 13 additions and 31 deletions
|
@ -3368,6 +3368,7 @@
|
|||
<string name="qr_code_login_header_failed_device_is_not_supported_description">Linking with this device is not supported.</string>
|
||||
<string name="qr_code_login_header_failed_timeout_description">The linking wasn’t completed in the required time.</string>
|
||||
<string name="qr_code_login_header_failed_denied_description">The request was denied on the other device.</string>
|
||||
<string name="qr_code_login_header_failed_other_description">The request failed.</string>
|
||||
<string name="qr_code_login_new_device_instruction_1">Open ${app_name} on your other device</string>
|
||||
<string name="qr_code_login_new_device_instruction_2">Go to Settings -> Security & Privacy -> Show All Sessions</string>
|
||||
<string name="qr_code_login_new_device_instruction_3">Select \'Show QR code\'</string>
|
||||
|
|
|
@ -16,9 +16,11 @@
|
|||
|
||||
package im.vector.app.features.login.qr
|
||||
|
||||
import org.matrix.android.sdk.internal.rendezvous.RendezvousFailureReason
|
||||
|
||||
sealed class QrCodeLoginConnectionStatus {
|
||||
object ConnectingToDevice : QrCodeLoginConnectionStatus()
|
||||
data class Connected(val securityCode: String, val canConfirmSecurityCode: Boolean) : QrCodeLoginConnectionStatus()
|
||||
object SigningIn : QrCodeLoginConnectionStatus()
|
||||
data class Failed(val errorType: QrCodeLoginErrorType, val canTryAgain: Boolean) : QrCodeLoginConnectionStatus()
|
||||
data class Failed(val errorType: RendezvousFailureReason, val canTryAgain: Boolean) : QrCodeLoginConnectionStatus()
|
||||
}
|
||||
|
|
|
@ -1,23 +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.login.qr
|
||||
|
||||
enum class QrCodeLoginErrorType {
|
||||
DEVICE_IS_NOT_SUPPORTED,
|
||||
TIMEOUT,
|
||||
REQUEST_WAS_DENIED,
|
||||
}
|
|
@ -27,6 +27,7 @@ import im.vector.app.R
|
|||
import im.vector.app.core.platform.VectorBaseFragment
|
||||
import im.vector.app.databinding.FragmentQrCodeLoginStatusBinding
|
||||
import im.vector.app.features.themes.ThemeUtils
|
||||
import org.matrix.android.sdk.internal.rendezvous.RendezvousFailureReason
|
||||
|
||||
@AndroidEntryPoint
|
||||
class QrCodeLoginStatusFragment : VectorBaseFragment<FragmentQrCodeLoginStatusBinding>() {
|
||||
|
@ -77,11 +78,12 @@ class QrCodeLoginStatusFragment : VectorBaseFragment<FragmentQrCodeLoginStatusBi
|
|||
)
|
||||
}
|
||||
|
||||
private fun getErrorCode(errorType: QrCodeLoginErrorType): String {
|
||||
return when (errorType) {
|
||||
QrCodeLoginErrorType.DEVICE_IS_NOT_SUPPORTED -> getString(R.string.qr_code_login_header_failed_device_is_not_supported_description)
|
||||
QrCodeLoginErrorType.TIMEOUT -> getString(R.string.qr_code_login_header_failed_timeout_description)
|
||||
QrCodeLoginErrorType.REQUEST_WAS_DENIED -> getString(R.string.qr_code_login_header_failed_denied_description)
|
||||
private fun getErrorCode(reason: RendezvousFailureReason): String {
|
||||
return when (reason) {
|
||||
RendezvousFailureReason.UnsupportedAlgorithm, RendezvousFailureReason.UnsupportedTransport -> getString(R.string.qr_code_login_header_failed_device_is_not_supported_description)
|
||||
RendezvousFailureReason.Expired -> getString(R.string.qr_code_login_header_failed_timeout_description)
|
||||
RendezvousFailureReason.UserDeclined -> getString(R.string.qr_code_login_header_failed_denied_description)
|
||||
else -> getString(R.string.qr_code_login_header_failed_other_description)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -39,7 +39,7 @@ class QrCodeLoginViewModel @AssistedInject constructor(
|
|||
@Assisted private val initialState: QrCodeLoginViewState,
|
||||
private val applicationContext: Context,
|
||||
private val authenticationService: AuthenticationService,
|
||||
private val activeSessionHolder: ActiveSessionHolder,
|
||||
private val activeSessionHolder: ActiveSessionHolder
|
||||
) : VectorViewModel<QrCodeLoginViewState, QrCodeLoginAction, QrCodeLoginViewEvents>(initialState) {
|
||||
val TAG: String = QrCodeLoginViewModel::class.java.simpleName
|
||||
|
||||
|
@ -116,7 +116,7 @@ class QrCodeLoginViewModel @AssistedInject constructor(
|
|||
private fun onFailed(reason: RendezvousFailureReason) {
|
||||
setState {
|
||||
copy(
|
||||
connectionStatus = QrCodeLoginConnectionStatus.Failed(errorType, canTryAgain)
|
||||
connectionStatus = QrCodeLoginConnectionStatus.Failed(reason, reason.canRetry)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue