Pin unlock : hides behind feature flag (disabled by default)
This commit is contained in:
@@ -135,9 +135,9 @@ class LoggedInFlowNode @AssistedInject constructor(
|
||||
}
|
||||
},
|
||||
onStop = {
|
||||
pinStateDataSource.lock()
|
||||
//Counterpart startSync is done in observeSyncStateAndNetworkStatus method.
|
||||
coroutineScope.launch {
|
||||
pinStateDataSource.lock()
|
||||
//Counterpart startSync is done in observeSyncStateAndNetworkStatus method.
|
||||
syncService.stopSync()
|
||||
}
|
||||
},
|
||||
|
||||
@@ -21,6 +21,6 @@ import kotlinx.coroutines.flow.StateFlow
|
||||
interface PinStateDataSource {
|
||||
val pinState: StateFlow<PinState>
|
||||
|
||||
fun lock()
|
||||
fun unlock()
|
||||
suspend fun lock()
|
||||
suspend fun unlock()
|
||||
}
|
||||
|
||||
@@ -40,6 +40,7 @@ dependencies {
|
||||
implementation(projects.libraries.matrix.api)
|
||||
implementation(projects.libraries.matrixui)
|
||||
implementation(projects.libraries.designsystem)
|
||||
implementation(projects.libraries.featureflag.api)
|
||||
|
||||
testImplementation(libs.test.junit)
|
||||
testImplementation(libs.coroutines.test)
|
||||
|
||||
@@ -19,17 +19,21 @@ package io.element.android.features.pin.impl.auth
|
||||
import androidx.compose.runtime.Composable
|
||||
import io.element.android.features.pin.api.PinStateDataSource
|
||||
import io.element.android.libraries.architecture.Presenter
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.launch
|
||||
import javax.inject.Inject
|
||||
|
||||
class PinAuthenticationPresenter @Inject constructor(
|
||||
private val pinStateDataSource: PinStateDataSource,
|
||||
private val coroutineScope: CoroutineScope,
|
||||
) : Presenter<PinAuthenticationState> {
|
||||
|
||||
@Composable
|
||||
override fun present(): PinAuthenticationState {
|
||||
|
||||
fun handleEvents(event: PinAuthenticationEvents) {
|
||||
when (event) {
|
||||
PinAuthenticationEvents.Unlock -> pinStateDataSource.unlock()
|
||||
PinAuthenticationEvents.Unlock -> coroutineScope.launch { pinStateDataSource.unlock() }
|
||||
}
|
||||
}
|
||||
return PinAuthenticationState(
|
||||
|
||||
@@ -21,22 +21,30 @@ import io.element.android.features.pin.api.PinState
|
||||
import io.element.android.features.pin.api.PinStateDataSource
|
||||
import io.element.android.libraries.di.AppScope
|
||||
import io.element.android.libraries.di.SingleIn
|
||||
import io.element.android.libraries.featureflag.api.FeatureFlagService
|
||||
import io.element.android.libraries.featureflag.api.FeatureFlags
|
||||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
import kotlinx.coroutines.flow.StateFlow
|
||||
import javax.inject.Inject
|
||||
|
||||
@SingleIn(AppScope::class)
|
||||
@ContributesBinding(AppScope::class)
|
||||
class DefaultPinStateDataSource @Inject constructor() : PinStateDataSource {
|
||||
class DefaultPinStateDataSource @Inject constructor(
|
||||
private val featureFlagService: FeatureFlagService,
|
||||
) : PinStateDataSource {
|
||||
|
||||
private val _pinState = MutableStateFlow<PinState>(PinState.Locked)
|
||||
private val _pinState = MutableStateFlow<PinState>(PinState.Unlocked)
|
||||
override val pinState: StateFlow<PinState> = _pinState
|
||||
|
||||
override fun unlock() {
|
||||
_pinState.value = PinState.Unlocked
|
||||
override suspend fun unlock() {
|
||||
if (featureFlagService.isFeatureEnabled(FeatureFlags.PinUnlock)) {
|
||||
_pinState.value = PinState.Unlocked
|
||||
}
|
||||
}
|
||||
|
||||
override fun lock() {
|
||||
_pinState.value = PinState.Locked
|
||||
override suspend fun lock() {
|
||||
if (featureFlagService.isFeatureEnabled(FeatureFlags.PinUnlock)) {
|
||||
_pinState.value = PinState.Locked
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -49,4 +49,10 @@ enum class FeatureFlags(
|
||||
description = "Send and receive voice messages",
|
||||
defaultValue = false,
|
||||
),
|
||||
PinUnlock(
|
||||
key = "feature.pinunlock",
|
||||
title = "Pin unlock",
|
||||
description = "Allow user to lock/unlock the app with a pin code or biometrics",
|
||||
defaultValue = false,
|
||||
),
|
||||
}
|
||||
|
||||
@@ -36,6 +36,7 @@ class StaticFeatureFlagProvider @Inject constructor() :
|
||||
FeatureFlags.Polls -> true
|
||||
FeatureFlags.NotificationSettings -> true
|
||||
FeatureFlags.VoiceMessages -> false
|
||||
FeatureFlags.PinUnlock -> false
|
||||
}
|
||||
} else {
|
||||
false
|
||||
|
||||
Reference in New Issue
Block a user