diff --git a/briar-android/src/main/java/org/briarproject/briar/android/activity/ActivityComponent.java b/briar-android/src/main/java/org/briarproject/briar/android/activity/ActivityComponent.java index 2c88bbf79..7b3b9a2ad 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/activity/ActivityComponent.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/activity/ActivityComponent.java @@ -68,6 +68,7 @@ import org.briarproject.briar.android.privategroup.reveal.RevealContactsFragment import org.briarproject.briar.android.remotewipe.RemoteWipeActivatedActivity; import org.briarproject.briar.android.remotewipe.RemoteWipeDisplayFragment; import org.briarproject.briar.android.remotewipe.RemoteWipeSetupActivity; +import org.briarproject.briar.android.remotewipe.RemoteWipeSetupExplainerFragment; import org.briarproject.briar.android.remotewipe.RemoteWipeSuccessFragment; import org.briarproject.briar.android.remotewipe.WiperSelectorFragment; import org.briarproject.briar.android.remotewipe.activate.ActivateRemoteWipeActivity; @@ -337,4 +338,6 @@ public interface ActivityComponent { void inject(ActivateRemoteWipeSuccessFragment activateRemoteWipeSuccessFragment); void inject(RevokeRemoteWipeSuccessFragment revokeRemoteWipeSuccessFragment); + + void inject(RemoteWipeSetupExplainerFragment remoteWipeSetupExplainerFragment); } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/remotewipe/RemoteWipeSetupActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/remotewipe/RemoteWipeSetupActivity.java index 0f2a287a5..3467643f0 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/remotewipe/RemoteWipeSetupActivity.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/remotewipe/RemoteWipeSetupActivity.java @@ -41,7 +41,7 @@ public class RemoteWipeSetupActivity extends BriarActivity implements if (viewModel.remoteWipeIsSetup()) { showInitialFragment(new RemoteWipeDisplayFragment()); } else { - showInitialFragment(WiperSelectorFragment.newInstance()); + showInitialFragment(new RemoteWipeSetupExplainerFragment()); } } @@ -66,6 +66,8 @@ public class RemoteWipeSetupActivity extends BriarActivity implements R.string.remote_wipe_setup_failed, Toast.LENGTH_LONG).show(); finish(); + } else if (state.equals(RemoteWipeSetupState.SELECTING)) { + showNextFragment(WiperSelectorFragment.newInstance()); } else if (state.equals(RemoteWipeSetupState.FINISHED)) { finish(); } else if (state.equals(RemoteWipeSetupState.MODIFY)) { diff --git a/briar-android/src/main/java/org/briarproject/briar/android/remotewipe/RemoteWipeSetupExplainerFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/remotewipe/RemoteWipeSetupExplainerFragment.java new file mode 100644 index 000000000..251ff312f --- /dev/null +++ b/briar-android/src/main/java/org/briarproject/briar/android/remotewipe/RemoteWipeSetupExplainerFragment.java @@ -0,0 +1,57 @@ +package org.briarproject.briar.android.remotewipe; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.Button; + +import org.briarproject.briar.R; +import org.briarproject.briar.android.activity.ActivityComponent; +import org.briarproject.briar.android.fragment.BaseFragment; + +import javax.inject.Inject; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.lifecycle.ViewModelProvider; + +public class RemoteWipeSetupExplainerFragment extends + BaseFragment { + + public static final String TAG = + RemoteWipeSetupExplainerFragment.class.getName(); + + @Inject + ViewModelProvider.Factory viewModelFactory; + + private RemoteWipeSetupViewModel viewModel; + + @Override + public void injectFragment(ActivityComponent component) { + component.inject(this); + viewModel = new ViewModelProvider(requireActivity(), viewModelFactory) + .get(RemoteWipeSetupViewModel.class); + } + + @Nullable + @Override + public View onCreateView(@NonNull LayoutInflater inflater, + @Nullable ViewGroup container, + @Nullable Bundle savedInstanceState) { + View view = inflater.inflate(R.layout.fragment_remote_wipe_setup_explainer, + container, false); + + Button confirmButton = view.findViewById(R.id.button_confirm); + confirmButton.setOnClickListener(e -> viewModel.onExplainerConfirmed()); + + Button cancelButton = view.findViewById(R.id.button_cancel); + cancelButton.setOnClickListener(e -> viewModel.onExplainerCancelled()); + return view; + } + + @Override + public String getUniqueTag() { + return TAG; + } +} 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 ace6f3654..2f0da38d8 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 @@ -4,5 +4,6 @@ public enum RemoteWipeSetupState { FAILED, SUCCESS, FINISHED, + SELECTING, MODIFY } 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 2cf1a0e80..1527ca2ff 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 @@ -69,6 +69,16 @@ public class RemoteWipeSetupViewModel extends AndroidViewModel { return wiperNames; } + @UiThread + public void onExplainerConfirmed() { + state.postValue(RemoteWipeSetupState.SELECTING); + } + + @UiThread + public void onExplainerCancelled() { + state.postValue(RemoteWipeSetupState.FINISHED); + } + @UiThread public void onSuccessDismissed() { state.postValue(RemoteWipeSetupState.FINISHED); diff --git a/briar-android/src/main/res/layout/fragment_remote_wipe_setup_explainer.xml b/briar-android/src/main/res/layout/fragment_remote_wipe_setup_explainer.xml new file mode 100644 index 000000000..8de9d3edd --- /dev/null +++ b/briar-android/src/main/res/layout/fragment_remote_wipe_setup_explainer.xml @@ -0,0 +1,71 @@ + + + + + + + + + +