From 55efa9dad98b3327510ee5a18bfb542357466412 Mon Sep 17 00:00:00 2001 From: ameba23 Date: Wed, 2 Mar 2022 16:59:28 +0100 Subject: [PATCH] Success dialog for deactivate remote wipe --- .../remotewipe/RemoteWipeDisplayFragment.java | 19 +++++++++++++++++++ .../remotewipe/RemoteWipeSetupState.java | 3 ++- .../remotewipe/RemoteWipeSetupViewModel.java | 3 ++- briar-android/src/main/res/values/strings.xml | 1 + 4 files changed, 24 insertions(+), 2 deletions(-) diff --git a/briar-android/src/main/java/org/briarproject/briar/android/remotewipe/RemoteWipeDisplayFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/remotewipe/RemoteWipeDisplayFragment.java index a3a1fde19..675bbdf49 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/remotewipe/RemoteWipeDisplayFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/remotewipe/RemoteWipeDisplayFragment.java @@ -18,6 +18,7 @@ import javax.inject.Inject; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.appcompat.app.AlertDialog; import androidx.lifecycle.ViewModelProvider; import androidx.recyclerview.widget.LinearLayoutManager; @@ -69,6 +70,7 @@ public class RemoteWipeDisplayFragment extends BaseFragment Button disableRemoteWipeButton = contentView.findViewById(R.id.button_cancel); disableRemoteWipeButton.setOnClickListener(e -> viewModel.onDisableRemoteWipe()); + viewModel.getState().observe(getViewLifecycleOwner(), this::onStateChanged); return contentView; } @@ -92,4 +94,21 @@ public class RemoteWipeDisplayFragment extends BaseFragment super.onStop(); list.stopPeriodicUpdate(); } + + private void onStateChanged(RemoteWipeSetupState state) { + if (state.equals(RemoteWipeSetupState.DISABLED)) { + showDisabledDialog(); + } + } + + private void showDisabledDialog() { + AlertDialog.Builder builder = new AlertDialog.Builder(requireContext(), + R.style.BriarDialogTheme); + builder.setTitle(R.string.remote_wipe_disable_success); + builder.setPositiveButton(R.string.ok, + (dialog, which) -> viewModel.onSuccessDismissed()); + builder.setIcon(R.drawable.ic_baseline_done_outline_24); + AlertDialog dialog = builder.create(); + dialog.show(); + } } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/remotewipe/RemoteWipeSetupState.java b/briar-android/src/main/java/org/briarproject/briar/android/remotewipe/RemoteWipeSetupState.java index 2f0da38d8..42d54e765 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/remotewipe/RemoteWipeSetupState.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/remotewipe/RemoteWipeSetupState.java @@ -5,5 +5,6 @@ public enum RemoteWipeSetupState { SUCCESS, FINISHED, SELECTING, - MODIFY + MODIFY, + DISABLED } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/remotewipe/RemoteWipeSetupViewModel.java b/briar-android/src/main/java/org/briarproject/briar/android/remotewipe/RemoteWipeSetupViewModel.java index b7263fe05..706f37e58 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/remotewipe/RemoteWipeSetupViewModel.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/remotewipe/RemoteWipeSetupViewModel.java @@ -112,10 +112,11 @@ public class RemoteWipeSetupViewModel extends ContactsViewModel { public void onDisableRemoteWipe() { try { db.transaction(false, remoteWipeManager::revokeAll); + state.postValue(RemoteWipeSetupState.DISABLED); } catch (DbException | FormatException e) { e.printStackTrace(); + state.postValue(RemoteWipeSetupState.FINISHED); } - state.postValue(RemoteWipeSetupState.FINISHED); } public void setupRemoteWipe(Collection wipers) diff --git a/briar-android/src/main/res/values/strings.xml b/briar-android/src/main/res/values/strings.xml index be9d82a7b..7ebac2ec9 100644 --- a/briar-android/src/main/res/values/strings.xml +++ b/briar-android/src/main/res/values/strings.xml @@ -774,6 +774,7 @@ Remote wipe status revoked Change remote wipers Disable remote wipe + Remote wipe is disabled Briar data has been wiped from %1$s\'s device. They will be unreachable until they recover their account.