From 5ac636d52d48348385dfae6c6cd47d24b05ad4ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20K=C3=BCrten?= Date: Fri, 28 May 2021 13:52:24 +0200 Subject: [PATCH] Add feature flag for sharing the app via offline hotspot --- .../java/org/briarproject/bramble/api/FeatureFlags.java | 2 ++ .../bramble/test/BrambleCoreIntegrationTestModule.java | 5 +++++ .../java/org/briarproject/briar/android/AppModule.java | 5 +++++ .../briar/android/settings/SettingsFragment.java | 7 +++++++ .../briar/android/settings/SettingsViewModel.java | 4 ++++ .../java/org/briarproject/briar/headless/HeadlessModule.kt | 1 + .../org/briarproject/briar/headless/HeadlessTestModule.kt | 1 + 7 files changed, 25 insertions(+) diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/FeatureFlags.java b/bramble-api/src/main/java/org/briarproject/bramble/api/FeatureFlags.java index 407e9717f..1f818e59a 100644 --- a/bramble-api/src/main/java/org/briarproject/bramble/api/FeatureFlags.java +++ b/bramble-api/src/main/java/org/briarproject/bramble/api/FeatureFlags.java @@ -12,4 +12,6 @@ public interface FeatureFlags { boolean shouldEnableDisappearingMessages(); boolean shouldEnableConnectViaBluetooth(); + + boolean shouldEnableShareAppViaOfflineHotspot(); } diff --git a/bramble-core/src/test/java/org/briarproject/bramble/test/BrambleCoreIntegrationTestModule.java b/bramble-core/src/test/java/org/briarproject/bramble/test/BrambleCoreIntegrationTestModule.java index 22dea21f6..cac2d562b 100644 --- a/bramble-core/src/test/java/org/briarproject/bramble/test/BrambleCoreIntegrationTestModule.java +++ b/bramble-core/src/test/java/org/briarproject/bramble/test/BrambleCoreIntegrationTestModule.java @@ -43,6 +43,11 @@ public class BrambleCoreIntegrationTestModule { public boolean shouldEnableConnectViaBluetooth() { return true; } + + @Override + public boolean shouldEnableShareAppViaOfflineHotspot() { + return true; + } }; } } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/AppModule.java b/briar-android/src/main/java/org/briarproject/briar/android/AppModule.java index edb555f9c..1be9934f6 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/AppModule.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/AppModule.java @@ -305,6 +305,11 @@ public class AppModule { public boolean shouldEnableConnectViaBluetooth() { return IS_DEBUG_BUILD; } + + @Override + public boolean shouldEnableShareAppViaOfflineHotspot() { + return IS_DEBUG_BUILD; + } }; } } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/settings/SettingsFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/settings/SettingsFragment.java index e3769e9e2..591f9031c 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/settings/SettingsFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/settings/SettingsFragment.java @@ -38,6 +38,7 @@ public class SettingsFragment extends PreferenceFragmentCompat { private static final String PREF_KEY_FEEDBACK = "pref_key_send_feedback"; private static final String PREF_KEY_DEV = "pref_key_dev"; private static final String PREF_KEY_EXPLODE = "pref_key_explode"; + private static final String PREF_KEY_SHARE_APP = "pref_key_share_app"; @Inject ViewModelProvider.Factory viewModelFactory; @@ -84,6 +85,12 @@ public class SettingsFragment extends PreferenceFragmentCompat { PreferenceGroup dev = requireNonNull(findPreference(PREF_KEY_DEV)); dev.setVisible(false); } + + if (!viewModel.shouldEnableShareAppViaOfflineHotspot()) { + Preference shareApp = + requireNonNull(findPreference(PREF_KEY_SHARE_APP)); + shareApp.setVisible(false); + } } @Override diff --git a/briar-android/src/main/java/org/briarproject/briar/android/settings/SettingsViewModel.java b/briar-android/src/main/java/org/briarproject/briar/android/settings/SettingsViewModel.java index ba92042f0..f6aa3da2f 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/settings/SettingsViewModel.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/settings/SettingsViewModel.java @@ -262,4 +262,8 @@ class SettingsViewModel extends DbViewModel implements EventListener { return screenLockTimeout; } + boolean shouldEnableShareAppViaOfflineHotspot() { + return featureFlags.shouldEnableShareAppViaOfflineHotspot(); + } + } diff --git a/briar-headless/src/main/java/org/briarproject/briar/headless/HeadlessModule.kt b/briar-headless/src/main/java/org/briarproject/briar/headless/HeadlessModule.kt index 58c217d4a..7837a92e4 100644 --- a/briar-headless/src/main/java/org/briarproject/briar/headless/HeadlessModule.kt +++ b/briar-headless/src/main/java/org/briarproject/briar/headless/HeadlessModule.kt @@ -95,5 +95,6 @@ internal class HeadlessModule(private val appDir: File) { override fun shouldEnableProfilePictures() = false override fun shouldEnableDisappearingMessages() = false override fun shouldEnableConnectViaBluetooth() = false + override fun shouldEnableShareAppViaOfflineHotspot() = false } } diff --git a/briar-headless/src/test/java/org/briarproject/briar/headless/HeadlessTestModule.kt b/briar-headless/src/test/java/org/briarproject/briar/headless/HeadlessTestModule.kt index c76212827..2aa47af06 100644 --- a/briar-headless/src/test/java/org/briarproject/briar/headless/HeadlessTestModule.kt +++ b/briar-headless/src/test/java/org/briarproject/briar/headless/HeadlessTestModule.kt @@ -83,6 +83,7 @@ internal class HeadlessTestModule(private val appDir: File) { override fun shouldEnableProfilePictures() = false override fun shouldEnableDisappearingMessages() = false override fun shouldEnableConnectViaBluetooth() = false + override fun shouldEnableShareAppViaOfflineHotspot() = false } @Provides