diff --git a/briar-android/src/main/AndroidManifest.xml b/briar-android/src/main/AndroidManifest.xml
index a6b8b2e73..863a7b3b1 100644
--- a/briar-android/src/main/AndroidManifest.xml
+++ b/briar-android/src/main/AndroidManifest.xml
@@ -161,6 +161,15 @@
android:value="org.briarproject.briar.android.account.NewOrRecoverActivity" />
+
+
+
+
contacts) {
- // do nothing
- }
-
-}
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/socialbackup/OwnerRecoveryModeMainFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/socialbackup/OwnerRecoveryModeMainFragment.java
new file mode 100644
index 000000000..3191126ee
--- /dev/null
+++ b/briar-android/src/main/java/org/briarproject/briar/android/socialbackup/OwnerRecoveryModeMainFragment.java
@@ -0,0 +1,73 @@
+package org.briarproject.briar.android.socialbackup;
+
+import android.content.Context;
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.Button;
+import android.widget.TextView;
+
+import org.briarproject.briar.R;
+import org.briarproject.briar.android.fragment.BaseFragment;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+public class OwnerRecoveryModeMainFragment extends BaseFragment {
+
+ protected ScanQrButtonListener listener;
+
+ public static final String NUM_RECOVERED = "num_recovered";
+
+ public static final String TAG =
+ OwnerRecoveryModeMainFragment.class.getName();
+
+ public static OwnerRecoveryModeMainFragment newInstance(int numRecovered) {
+ Bundle args = new Bundle();
+ args.putInt(NUM_RECOVERED, numRecovered);
+ OwnerRecoveryModeMainFragment fragment =
+ new OwnerRecoveryModeMainFragment();
+ fragment.setArguments(args);
+ return fragment;
+ }
+
+ private int numShards;
+
+ @Override
+ public String getUniqueTag() {
+ return TAG;
+ }
+
+ @Override
+ public void onCreate(@Nullable Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ requireActivity().setTitle(R.string.title_recovery_mode);
+
+ Bundle args = requireArguments();
+ numShards = args.getInt(NUM_RECOVERED);
+ }
+
+ @Nullable
+ @Override
+ public View onCreateView(@NonNull LayoutInflater inflater,
+ @Nullable ViewGroup container,
+ @Nullable Bundle savedInstanceState) {
+ View view = inflater.inflate(R.layout.fragment_recovery_owner_main,
+ container, false);
+
+ TextView textViewCount = view.findViewById(R.id.textViewShardCount);
+ textViewCount.setText(String.format("%d", numShards));
+
+ Button button = view.findViewById(R.id.button);
+ button.setOnClickListener(e -> listener.scanQrButtonClicked());
+ return view;
+ }
+
+ @Override
+ public void onAttach(Context context) {
+ super.onAttach(context);
+ listener = (ScanQrButtonListener) context;
+ }
+
+}
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/socialbackup/RecoverActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/socialbackup/RecoverActivity.java
index ca5c4c8e0..3407ef795 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/socialbackup/RecoverActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/socialbackup/RecoverActivity.java
@@ -6,18 +6,31 @@ import android.widget.Toast;
import org.briarproject.briar.R;
import org.briarproject.briar.android.activity.ActivityComponent;
import org.briarproject.briar.android.activity.BaseActivity;
-import org.briarproject.briar.android.activity.BriarActivity;
import org.briarproject.briar.android.fragment.BaseFragment;
public class RecoverActivity extends BaseActivity implements
- BaseFragment.BaseFragmentListener, ExplainerDismissedListener {
+ BaseFragment.BaseFragmentListener, ExplainerDismissedListener,
+ ScanQrButtonListener {
+
+ private int numRecovered;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_recover);
- OwnerRecoveryModeExplainerFragment fragment = new OwnerRecoveryModeExplainerFragment();
- showInitialFragment(fragment);
+
+ numRecovered = 0; // TODO - retrieve this from somewhere
+
+ // only show the explainer if we have no shards
+ if (numRecovered == 0) {
+ OwnerRecoveryModeExplainerFragment fragment =
+ new OwnerRecoveryModeExplainerFragment();
+ showInitialFragment(fragment);
+ } else {
+ OwnerRecoveryModeMainFragment fragment =
+ OwnerRecoveryModeMainFragment.newInstance(numRecovered);
+ showInitialFragment(fragment);
+ }
}
@Override
@@ -26,11 +39,18 @@ public class RecoverActivity extends BaseActivity implements
}
@Override
- public void explainerDismissed () {
+ public void explainerDismissed() {
+ OwnerRecoveryModeMainFragment fragment =
+ OwnerRecoveryModeMainFragment.newInstance(numRecovered);
+ showNextFragment(fragment);
+ }
+
+ @Override
+ public void scanQrButtonClicked() {
+ // TODO
Toast.makeText(this,
"coming soon...",
Toast.LENGTH_SHORT).show();
- // TODO go to the next screen in the recover process
finish();
}
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/socialbackup/ScanQrButtonListener.java b/briar-android/src/main/java/org/briarproject/briar/android/socialbackup/ScanQrButtonListener.java
new file mode 100644
index 000000000..53f14d94e
--- /dev/null
+++ b/briar-android/src/main/java/org/briarproject/briar/android/socialbackup/ScanQrButtonListener.java
@@ -0,0 +1,8 @@
+package org.briarproject.briar.android.socialbackup;
+
+import androidx.annotation.UiThread;
+
+public interface ScanQrButtonListener {
+ @UiThread
+ void scanQrButtonClicked();
+}
diff --git a/briar-android/src/main/res/values/strings.xml b/briar-android/src/main/res/values/strings.xml
index 21ee3e5c1..1c7f3f2b6 100644
--- a/briar-android/src/main/res/values/strings.xml
+++ b/briar-android/src/main/res/values/strings.xml
@@ -718,4 +718,5 @@
Create new account or recover existing account
Recover Account
+ Help recover account