From 0266da993d8ce4376018deb36d51864ec697473b Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Tue, 20 Apr 2021 14:38:58 -0300 Subject: [PATCH] Reset plugin assignments when starting AddNearbyContactIntroFragment --- .../add/nearby/AddNearbyContactIntroFragment.java | 3 +++ .../add/nearby/AddNearbyContactViewModel.java | 15 +++++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contact/add/nearby/AddNearbyContactIntroFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/contact/add/nearby/AddNearbyContactIntroFragment.java index 4e3e0c1d7..5eebfcada 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/contact/add/nearby/AddNearbyContactIntroFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/contact/add/nearby/AddNearbyContactIntroFragment.java @@ -95,6 +95,9 @@ public class AddNearbyContactIntroFragment extends BaseFragment { super.onStart(); // Permissions may have been granted manually while we were stopped permissionManager.resetPermissions(); + // Reset plugins in case they were assigned when we weren't signed-in + viewModel.resetPlugins(); + // Scroll down in case the screen is small, so the button is visible scrollView.post(() -> scrollView.fullScroll(FOCUS_DOWN)); } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contact/add/nearby/AddNearbyContactViewModel.java b/briar-android/src/main/java/org/briarproject/briar/android/contact/add/nearby/AddNearbyContactViewModel.java index 2a284f685..6b3bcd457 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/contact/add/nearby/AddNearbyContactViewModel.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/contact/add/nearby/AddNearbyContactViewModel.java @@ -148,8 +148,8 @@ class AddNearbyContactViewModel extends AndroidViewModel @Nullable private final BluetoothAdapter bt; - @Nullable - private final Plugin wifiPlugin, bluetoothPlugin; + @Nullable // UiThread + private Plugin wifiPlugin, bluetoothPlugin; // UiThread private BluetoothDecision bluetoothDecision = BluetoothDecision.UNKNOWN; @@ -210,6 +210,17 @@ class AddNearbyContactViewModel extends AndroidViewModel stopListening(); } + /** + * When this activity gets killed and re-created while the user is not + * signed-in (can happen when a permission is denied which terminates app), + * the plugins will be null, so we need to re-assign them after sign-in. + */ + @UiThread + void resetPlugins() { + wifiPlugin = pluginManager.getPlugin(LanTcpConstants.ID); + bluetoothPlugin = pluginManager.getPlugin(BluetoothConstants.ID); + } + @UiThread void onContinueClicked() { if (bluetoothDecision == REFUSED) {