From aa74b000ea2ebd36d1efa285493e31d16ab6152a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Sebastian=20K=C3=BCrten?= <sebastian@mobanisto.de>
Date: Wed, 12 Jan 2022 11:33:27 +0100
Subject: [PATCH] Hide/disable contact menu items that do not work yet based on
 feature flags

---
 .../briar/desktop/contact/ContactDropDown.kt  | 39 ++++++++++++-------
 .../briarproject/briar/desktop/ui/BriarUi.kt  |  4 ++
 .../briar/desktop/utils/FeatureFlagUtils.kt   |  6 +++
 3 files changed, 34 insertions(+), 15 deletions(-)

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 edf4a93aff..c0f8411df9 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 b7956d1243..f89e211cbd 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 1e79562469..3b006ccd7c 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"
-- 
GitLab