Skip to content

Commit d8ea9c8

Browse files
author
Onuray Sahin
committed
Add flag for qr code login.
1 parent f272e56 commit d8ea9c8

File tree

5 files changed

+40
-9
lines changed

5 files changed

+40
-9
lines changed

vector-app/src/debug/java/im/vector/app/features/debug/features/DebugFeaturesStateFactory.kt

+5
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,11 @@ class DebugFeaturesStateFactory @Inject constructor(
9090
key = DebugFeatureKeys.newDeviceManagementEnabled,
9191
factory = VectorFeatures::isNewDeviceManagementEnabled
9292
),
93+
createBooleanFeature(
94+
label = "Enable QR Code Login",
95+
key = DebugFeatureKeys.qrCodeLoginEnabled,
96+
factory = VectorFeatures::isQrCodeLoginEnabled
97+
),
9398
)
9499
)
95100
}

vector-app/src/debug/java/im/vector/app/features/debug/features/DebugVectorFeatures.kt

+4
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,9 @@ class DebugVectorFeatures(
7979
override fun isNewDeviceManagementEnabled(): Boolean = read(DebugFeatureKeys.newDeviceManagementEnabled)
8080
?: vectorFeatures.isNewDeviceManagementEnabled()
8181

82+
override fun isQrCodeLoginEnabled() = read(DebugFeatureKeys.qrCodeLoginEnabled)
83+
?: vectorFeatures.isQrCodeLoginEnabled()
84+
8285
fun <T> override(value: T?, key: Preferences.Key<T>) = updatePreferences {
8386
if (value == null) {
8487
it.remove(key)
@@ -140,4 +143,5 @@ object DebugFeatureKeys {
140143
val startDmOnFirstMsg = booleanPreferencesKey("start-dm-on-first-msg")
141144
val newAppLayoutEnabled = booleanPreferencesKey("new-app-layout-enabled")
142145
val newDeviceManagementEnabled = booleanPreferencesKey("new-device-management-enabled")
146+
val qrCodeLoginEnabled = booleanPreferencesKey("qr-code-login-enabled")
143147
}

vector/src/main/java/im/vector/app/features/VectorFeatures.kt

+2
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ interface VectorFeatures {
4141
*/
4242
fun isNewAppLayoutFeatureEnabled(): Boolean
4343
fun isNewDeviceManagementEnabled(): Boolean
44+
fun isQrCodeLoginEnabled(): Boolean
4445
}
4546

4647
class DefaultVectorFeatures : VectorFeatures {
@@ -57,4 +58,5 @@ class DefaultVectorFeatures : VectorFeatures {
5758
override fun forceUsageOfOpusEncoder(): Boolean = false
5859
override fun isNewAppLayoutFeatureEnabled(): Boolean = true
5960
override fun isNewDeviceManagementEnabled(): Boolean = false
61+
override fun isQrCodeLoginEnabled(): Boolean = false
6062
}

vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthCombinedLoginFragment.kt

+15-9
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ import im.vector.app.core.extensions.setOnFocusLostListener
3636
import im.vector.app.core.extensions.setOnImeDoneListener
3737
import im.vector.app.core.extensions.toReducedUrl
3838
import im.vector.app.databinding.FragmentFtueCombinedLoginBinding
39+
import im.vector.app.features.VectorFeatures
3940
import im.vector.app.features.login.LoginMode
4041
import im.vector.app.features.login.SSORedirectRouterActivity
4142
import im.vector.app.features.login.SocialLoginButtonsView
@@ -57,6 +58,7 @@ class FtueAuthCombinedLoginFragment :
5758

5859
@Inject lateinit var loginFieldsValidation: LoginFieldsValidation
5960
@Inject lateinit var loginErrorParser: LoginErrorParser
61+
@Inject lateinit var vectorFeatures: VectorFeatures
6062

6163
override fun getBinding(inflater: LayoutInflater, container: ViewGroup?): FragmentFtueCombinedLoginBinding {
6264
return FragmentFtueCombinedLoginBinding.inflate(inflater, container, false)
@@ -72,15 +74,19 @@ class FtueAuthCombinedLoginFragment :
7274
viewModel.handle(OnboardingAction.UserNameEnteredAction.Login(views.loginInput.content()))
7375
}
7476
views.loginForgotPassword.debouncedClicks { viewModel.handle(OnboardingAction.PostViewEvent(OnboardingViewEvents.OnForgetPasswordClicked)) }
75-
views.loginWithQrCode.debouncedClicks {
76-
navigator
77-
.openLoginWithQrCode(
78-
requireActivity(),
79-
QrCodeLoginArgs(
80-
loginType = QrCodeLoginType.LOGIN,
81-
showQrCodeByDefault = false,
82-
)
83-
)
77+
if (vectorFeatures.isQrCodeLoginEnabled()) {
78+
views.loginWithQrCode.debouncedClicks {
79+
navigator
80+
.openLoginWithQrCode(
81+
requireActivity(),
82+
QrCodeLoginArgs(
83+
loginType = QrCodeLoginType.LOGIN,
84+
showQrCodeByDefault = false,
85+
)
86+
)
87+
}
88+
} else {
89+
views.loginWithQrCode.isVisible = false
8490
}
8591
}
8692

vector/src/main/java/im/vector/app/features/settings/devices/v2/VectorSettingsDevicesFragment.kt

+14
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ import im.vector.app.core.platform.VectorBaseFragment
3535
import im.vector.app.core.resources.ColorProvider
3636
import im.vector.app.core.resources.DrawableProvider
3737
import im.vector.app.databinding.FragmentSettingsDevicesBinding
38+
import im.vector.app.features.VectorFeatures
3839
import im.vector.app.features.crypto.recover.SetupMode
3940
import im.vector.app.features.crypto.verification.VerificationBottomSheet
4041
import im.vector.app.features.login.qr.QrCodeLoginArgs
@@ -64,6 +65,8 @@ class VectorSettingsDevicesFragment :
6465

6566
@Inject lateinit var colorProvider: ColorProvider
6667

68+
@Inject lateinit var vectorFeatures: VectorFeatures
69+
6770
private val viewModel: DevicesViewModel by fragmentViewModel()
6871

6972
override fun getBinding(inflater: LayoutInflater, container: ViewGroup?): FragmentSettingsDevicesBinding {
@@ -154,6 +157,17 @@ class VectorSettingsDevicesFragment :
154157
}
155158

156159
private fun initQrLoginView() {
160+
if (!vectorFeatures.isQrCodeLoginEnabled()) {
161+
views.deviceListHeaderSignInWithQrCode.isVisible = false
162+
views.deviceListHeaderScanQrCodeButton.isVisible = false
163+
views.deviceListHeaderShowQrCodeButton.isVisible = false
164+
return
165+
}
166+
167+
views.deviceListHeaderSignInWithQrCode.isVisible = true
168+
views.deviceListHeaderScanQrCodeButton.isVisible = true
169+
views.deviceListHeaderShowQrCodeButton.isVisible = true
170+
157171
views.deviceListHeaderScanQrCodeButton.debouncedClicks {
158172
navigator
159173
.openLoginWithQrCode(

0 commit comments

Comments
 (0)