From 5ec80adfe8aab0a3f8bbc7ac534b56b4e8c4079e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20K=C3=BCrten?= Date: Thu, 18 Feb 2021 14:07:29 +0100 Subject: [PATCH] Implement signout after language change via view model event --- .../android/settings/SettingsActivity.java | 18 +++++++++--------- .../android/settings/SettingsFragment.java | 10 +++++++++- .../android/settings/SettingsViewModel.java | 11 +++++++++++ 3 files changed, 29 insertions(+), 10 deletions(-) diff --git a/briar-android/src/main/java/org/briarproject/briar/android/settings/SettingsActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/settings/SettingsActivity.java index 27b4634ec..1405b4f38 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/settings/SettingsActivity.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/settings/SettingsActivity.java @@ -46,11 +46,16 @@ public class SettingsActivity extends BriarActivity { setContentView(R.layout.activity_settings); - if (featureFlags.shouldEnableProfilePictures()) { - ViewModelProvider provider = - new ViewModelProvider(this, viewModelFactory); - settingsViewModel = provider.get(SettingsViewModel.class); + ViewModelProvider provider = + new ViewModelProvider(this, viewModelFactory); + settingsViewModel = provider.get(SettingsViewModel.class); + settingsViewModel.getLanguageChange().observeEvent(this, b -> { + signOut(false, false); + finishAffinity(); + }); + + if (featureFlags.shouldEnableProfilePictures()) { TextView textViewUserName = findViewById(R.id.username); CircleImageView imageViewAvatar = findViewById(R.id.avatarImage); @@ -118,9 +123,4 @@ public class SettingsActivity extends BriarActivity { ConfirmAvatarDialogFragment.TAG); } - void languageChanged() { - signOut(false, false); - finishAffinity(); - } - } 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 bebd33382..17c0d153c 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 @@ -45,6 +45,7 @@ import androidx.annotation.Nullable; import androidx.annotation.StringRes; import androidx.core.content.ContextCompat; import androidx.core.text.TextUtilsCompat; +import androidx.lifecycle.ViewModelProvider; import androidx.preference.ListPreference; import androidx.preference.Preference; import androidx.preference.Preference.OnPreferenceChangeListener; @@ -163,12 +164,19 @@ public class SettingsFragment extends PreferenceFragmentCompat LocationUtils locationUtils; @Inject CircumventionProvider circumventionProvider; + @Inject + ViewModelProvider.Factory viewModelFactory; + + private SettingsViewModel viewModel; @Override public void onAttach(Context context) { super.onAttach(context); listener = (SettingsActivity) context; listener.getActivityComponent().inject(this); + + viewModel = new ViewModelProvider(requireActivity(), viewModelFactory) + .get(SettingsViewModel.class); } @Override @@ -636,7 +644,7 @@ public class SettingsFragment extends PreferenceFragmentCompat builder.setPositiveButton(R.string.sign_out_button, (dialogInterface, i) -> { language.setValue(newValue); - listener.languageChanged(); + viewModel.languageChanged(); }); builder.setNegativeButton(R.string.cancel, null); builder.setCancelable(false); 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 c6821b92a..2101ca251 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 @@ -56,6 +56,9 @@ class SettingsViewModel extends AndroidViewModel { private final MutableLiveEvent setAvatarFailed = new MutableLiveEvent<>(); + private final MutableLiveEvent languageChanged = + new MutableLiveEvent<>(); + @Inject SettingsViewModel(Application application, IdentityManager identityManager, @@ -83,6 +86,10 @@ class SettingsViewModel extends AndroidViewModel { return setAvatarFailed; } + LiveEvent getLanguageChange() { + return languageChanged; + } + private void loadOwnIdentityInfo() { dbExecutor.execute(() -> { try { @@ -131,4 +138,8 @@ class SettingsViewModel extends AndroidViewModel { }); } + void languageChanged() { + languageChanged.setEvent(true); + } + }