diff --git a/src/main/kotlin/org/briarproject/briar/desktop/contact/ContactDropDown.kt b/src/main/kotlin/org/briarproject/briar/desktop/contact/ContactDropDown.kt index edf4a93aff3a7640a7d324bbd11ff953f208a287..c0f8411df9301eda739cb31e3572c1542956042f 100644 --- a/src/main/kotlin/org/briarproject/briar/desktop/contact/ContactDropDown.kt +++ b/src/main/kotlin/org/briarproject/briar/desktop/contact/ContactDropDown.kt @@ -18,6 +18,8 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.unit.sp import org.briarproject.briar.desktop.utils.InternationalizationUtils.i18n +import org.briarproject.briar.desktop.utils.getCoreFeatureFlags +import org.briarproject.briar.desktop.utils.getDesktopFeatureFlags @Composable fun ContactDropDown( @@ -26,6 +28,9 @@ fun ContactDropDown( onMakeIntroduction: () -> Unit, onDeleteAllMessages: () -> Unit, ) { + val coreFeatureFlags = getCoreFeatureFlags() + val desktopFeatureFlags = getDesktopFeatureFlags() + var connectionMode by remember { mutableStateOf(false) } var contactMode by remember { mutableStateOf(false) } DropdownMenu( @@ -35,24 +40,28 @@ fun ContactDropDown( DropdownMenuItem(onClick = { close(); onMakeIntroduction() }) { Text(i18n("contacts.dropdown.introduction"), fontSize = 14.sp) } - DropdownMenuItem(onClick = {}) { - Text(i18n("contacts.dropdown.disappearing"), fontSize = 14.sp) + if (coreFeatureFlags.shouldEnableDisappearingMessages()) { + DropdownMenuItem(onClick = {}) { + Text(i18n("contacts.dropdown.disappearing"), fontSize = 14.sp) + } } DropdownMenuItem(onClick = { close(); onDeleteAllMessages() }) { Text(i18n("contacts.dropdown.delete.all"), fontSize = 14.sp) } - DropdownMenuItem(onClick = { connectionMode = true; close() }) { - Row(Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.SpaceBetween) { - Text( - i18n("contacts.dropdown.connections"), - fontSize = 14.sp, - modifier = Modifier.align(Alignment.CenterVertically) - ) - Icon( - Icons.Filled.ArrowRight, - i18n("access.contacts.dropdown.connections.expand"), - modifier = Modifier.align(Alignment.CenterVertically) - ) + if (desktopFeatureFlags.shouldEnableTransportSettings()) { + DropdownMenuItem(onClick = { connectionMode = true; close() }) { + Row(Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.SpaceBetween) { + Text( + i18n("contacts.dropdown.connections"), + fontSize = 14.sp, + modifier = Modifier.align(Alignment.CenterVertically) + ) + Icon( + Icons.Filled.ArrowRight, + i18n("access.contacts.dropdown.connections.expand"), + modifier = Modifier.align(Alignment.CenterVertically) + ) + } } } DropdownMenuItem(onClick = { contactMode = true; close() }) { @@ -91,7 +100,7 @@ fun ContactDropDown( DropdownMenuItem(onClick = { false }) { Text(i18n("contacts.dropdown.contact.title"), fontSize = 12.sp) } - DropdownMenuItem(onClick = { false }) { + DropdownMenuItem(onClick = { false }, enabled = false) { Text(i18n("contacts.dropdown.contact.change"), fontSize = 14.sp) } DropdownMenuItem(onClick = { false }) { diff --git a/src/main/kotlin/org/briarproject/briar/desktop/ui/BriarUi.kt b/src/main/kotlin/org/briarproject/briar/desktop/ui/BriarUi.kt index b7956d1243a4ba488d844c33fe9827bdf2b84d01..f89e211cbd3668f958371c2bc7fb933c32af0b52 100644 --- a/src/main/kotlin/org/briarproject/briar/desktop/ui/BriarUi.kt +++ b/src/main/kotlin/org/briarproject/briar/desktop/ui/BriarUi.kt @@ -9,6 +9,7 @@ import androidx.compose.runtime.setValue import androidx.compose.runtime.staticCompositionLocalOf import androidx.compose.ui.res.painterResource import androidx.compose.ui.window.Window +import org.briarproject.bramble.api.FeatureFlags import org.briarproject.bramble.api.account.AccountManager import org.briarproject.bramble.api.lifecycle.LifecycleManager import org.briarproject.bramble.api.lifecycle.LifecycleManager.LifecycleState.RUNNING @@ -40,6 +41,7 @@ interface BriarUi { } val LocalViewModelProvider = staticCompositionLocalOf<ViewModelProvider?> { null } +val LocalCoreFeatureFlags = staticCompositionLocalOf<FeatureFlags?> { null } val LocalDesktopFeatureFlags = staticCompositionLocalOf<DesktopFeatureFlags?> { null } @Immutable @@ -50,6 +52,7 @@ constructor( private val accountManager: AccountManager, private val lifecycleManager: LifecycleManager, private val viewModelProvider: ViewModelProvider, + private val featureFlags: FeatureFlags, private val desktopFeatureFlags: DesktopFeatureFlags, ) : BriarUi { @@ -85,6 +88,7 @@ constructor( window.minimumSize = Dimension(800, 600) CompositionLocalProvider( LocalViewModelProvider provides viewModelProvider, + LocalCoreFeatureFlags provides featureFlags, LocalDesktopFeatureFlags provides desktopFeatureFlags ) { val settingsViewModel: SettingsViewModel = viewModel() diff --git a/src/main/kotlin/org/briarproject/briar/desktop/utils/FeatureFlagUtils.kt b/src/main/kotlin/org/briarproject/briar/desktop/utils/FeatureFlagUtils.kt index 1e79562469e52c76d8e8c5c8fdcee66b405b640b..3b006ccd7c5da83bbdfc5024f053b0de29bd0df5 100644 --- a/src/main/kotlin/org/briarproject/briar/desktop/utils/FeatureFlagUtils.kt +++ b/src/main/kotlin/org/briarproject/briar/desktop/utils/FeatureFlagUtils.kt @@ -1,8 +1,14 @@ package org.briarproject.briar.desktop.utils import androidx.compose.runtime.Composable +import org.briarproject.briar.desktop.ui.LocalCoreFeatureFlags import org.briarproject.briar.desktop.ui.LocalDesktopFeatureFlags +@Composable +fun getCoreFeatureFlags() = checkNotNull(LocalCoreFeatureFlags.current) { + "No FeatureFlags was provided via LocalCoreFeatureFlags" +} + @Composable fun getDesktopFeatureFlags() = checkNotNull(LocalDesktopFeatureFlags.current) { "No DesktopFeatureFlags was provided via LocalDesktopFeatureFlags"