Implement signout after language change via view model event

This commit is contained in:
Sebastian Kürten
2021-02-18 14:07:29 +01:00
parent a56935bc3d
commit 5ec80adfe8
3 changed files with 29 additions and 10 deletions

View File

@@ -46,11 +46,16 @@ public class SettingsActivity extends BriarActivity {
setContentView(R.layout.activity_settings); setContentView(R.layout.activity_settings);
if (featureFlags.shouldEnableProfilePictures()) { ViewModelProvider provider =
ViewModelProvider provider = new ViewModelProvider(this, viewModelFactory);
new ViewModelProvider(this, viewModelFactory); settingsViewModel = provider.get(SettingsViewModel.class);
settingsViewModel = provider.get(SettingsViewModel.class);
settingsViewModel.getLanguageChange().observeEvent(this, b -> {
signOut(false, false);
finishAffinity();
});
if (featureFlags.shouldEnableProfilePictures()) {
TextView textViewUserName = findViewById(R.id.username); TextView textViewUserName = findViewById(R.id.username);
CircleImageView imageViewAvatar = CircleImageView imageViewAvatar =
findViewById(R.id.avatarImage); findViewById(R.id.avatarImage);
@@ -118,9 +123,4 @@ public class SettingsActivity extends BriarActivity {
ConfirmAvatarDialogFragment.TAG); ConfirmAvatarDialogFragment.TAG);
} }
void languageChanged() {
signOut(false, false);
finishAffinity();
}
} }

View File

@@ -45,6 +45,7 @@ import androidx.annotation.Nullable;
import androidx.annotation.StringRes; import androidx.annotation.StringRes;
import androidx.core.content.ContextCompat; import androidx.core.content.ContextCompat;
import androidx.core.text.TextUtilsCompat; import androidx.core.text.TextUtilsCompat;
import androidx.lifecycle.ViewModelProvider;
import androidx.preference.ListPreference; import androidx.preference.ListPreference;
import androidx.preference.Preference; import androidx.preference.Preference;
import androidx.preference.Preference.OnPreferenceChangeListener; import androidx.preference.Preference.OnPreferenceChangeListener;
@@ -163,12 +164,19 @@ public class SettingsFragment extends PreferenceFragmentCompat
LocationUtils locationUtils; LocationUtils locationUtils;
@Inject @Inject
CircumventionProvider circumventionProvider; CircumventionProvider circumventionProvider;
@Inject
ViewModelProvider.Factory viewModelFactory;
private SettingsViewModel viewModel;
@Override @Override
public void onAttach(Context context) { public void onAttach(Context context) {
super.onAttach(context); super.onAttach(context);
listener = (SettingsActivity) context; listener = (SettingsActivity) context;
listener.getActivityComponent().inject(this); listener.getActivityComponent().inject(this);
viewModel = new ViewModelProvider(requireActivity(), viewModelFactory)
.get(SettingsViewModel.class);
} }
@Override @Override
@@ -636,7 +644,7 @@ public class SettingsFragment extends PreferenceFragmentCompat
builder.setPositiveButton(R.string.sign_out_button, builder.setPositiveButton(R.string.sign_out_button,
(dialogInterface, i) -> { (dialogInterface, i) -> {
language.setValue(newValue); language.setValue(newValue);
listener.languageChanged(); viewModel.languageChanged();
}); });
builder.setNegativeButton(R.string.cancel, null); builder.setNegativeButton(R.string.cancel, null);
builder.setCancelable(false); builder.setCancelable(false);

View File

@@ -56,6 +56,9 @@ class SettingsViewModel extends AndroidViewModel {
private final MutableLiveEvent<Boolean> setAvatarFailed = private final MutableLiveEvent<Boolean> setAvatarFailed =
new MutableLiveEvent<>(); new MutableLiveEvent<>();
private final MutableLiveEvent<Boolean> languageChanged =
new MutableLiveEvent<>();
@Inject @Inject
SettingsViewModel(Application application, SettingsViewModel(Application application,
IdentityManager identityManager, IdentityManager identityManager,
@@ -83,6 +86,10 @@ class SettingsViewModel extends AndroidViewModel {
return setAvatarFailed; return setAvatarFailed;
} }
LiveEvent<Boolean> getLanguageChange() {
return languageChanged;
}
private void loadOwnIdentityInfo() { private void loadOwnIdentityInfo() {
dbExecutor.execute(() -> { dbExecutor.execute(() -> {
try { try {
@@ -131,4 +138,8 @@ class SettingsViewModel extends AndroidViewModel {
}); });
} }
void languageChanged() {
languageChanged.setEvent(true);
}
} }