diff --git a/briar-android/src/main/AndroidManifest.xml b/briar-android/src/main/AndroidManifest.xml
index e4e606166..a6b8b2e73 100644
--- a/briar-android/src/main/AndroidManifest.xml
+++ b/briar-android/src/main/AndroidManifest.xml
@@ -153,15 +153,14 @@
+ android:name="org.briarproject.briar.android.socialbackup.RecoverActivity"
+ android:label="@string/activity_name_recovery"
+ android:parentActivityName="org.briarproject.briar.android.account.NewOrRecoverActivity">
+ android:value="org.briarproject.briar.android.account.NewOrRecoverActivity" />
-
{
- listener.setupNewAccountChosen();
+ Button newAccountButton = view.findViewById(R.id.buttonSetupNewAccount);
+ newAccountButton.setOnClickListener(e -> {
+ setupNewAccountListener.setupNewAccountChosen();
+ });
+
+ Button recoverAccountButton = view.findViewById(R.id.buttonRestoreAccount);
+ recoverAccountButton.setOnClickListener(e -> {
+ recoverAccountListener.recoverAccountChosen();
});
return view;
}
@@ -48,7 +54,8 @@ public class NewOrRecoverFragment extends BaseFragment {
@Override
public void onAttach(Context context) {
super.onAttach(context);
- listener = (SetupNewAccountChosenListener) context;
+ setupNewAccountListener = (SetupNewAccountChosenListener) context;
+ recoverAccountListener = (RecoverAccountListener) context;
}
@Override
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/account/RecoverAccountListener.java b/briar-android/src/main/java/org/briarproject/briar/android/account/RecoverAccountListener.java
new file mode 100644
index 000000000..8f267cc70
--- /dev/null
+++ b/briar-android/src/main/java/org/briarproject/briar/android/account/RecoverAccountListener.java
@@ -0,0 +1,8 @@
+package org.briarproject.briar.android.account;
+
+import androidx.annotation.UiThread;
+
+public interface RecoverAccountListener {
+ @UiThread
+ void recoverAccountChosen();
+}
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 d90007f79..a3def6f1e 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
@@ -85,6 +85,8 @@ import org.briarproject.briar.android.socialbackup.CustodianSelectorFragment;
import org.briarproject.briar.android.socialbackup.DistributedBackupActivity;
import org.briarproject.briar.android.socialbackup.ExistingBackupFragment;
import org.briarproject.briar.android.socialbackup.OldDistributedBackupActivity;
+import org.briarproject.briar.android.socialbackup.OwnerRecoveryModeExplainerFragment;
+import org.briarproject.briar.android.socialbackup.RecoverActivity;
import org.briarproject.briar.android.socialbackup.ShardsSentFragment;
import org.briarproject.briar.android.socialbackup.ThresholdSelectorFragment;
import org.briarproject.briar.android.socialbackup.creation.CreateBackupController;
@@ -257,8 +259,8 @@ public interface ActivityComponent {
void inject(ThresholdSelectorFragment thresholdSelectorFragment);
void inject(DistributedBackupActivity distributedBackupActivity);
-// void inject(CreateBackupController createBackupController);
-// void inject(CustodianDisplayFragment custodianDisplayFragment);
+
+ void inject(RecoverActivity recoverActivity);
void inject(DatabaseComponent databaseComponent);
@@ -266,6 +268,8 @@ public interface ActivityComponent {
void inject(ShardsSentFragment shardsSentFragment);
+ void inject(OwnerRecoveryModeExplainerFragment ownerRecoveryModeExplainerFragment);
+
void inject(ExistingBackupFragment existingBackupFragment);
void inject(NewOrRecoverFragment newOrRecoverFragment);
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/socialbackup/OwnerRecoveryModeExplainerFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/socialbackup/OwnerRecoveryModeExplainerFragment.java
new file mode 100644
index 000000000..d21e3b9bc
--- /dev/null
+++ b/briar-android/src/main/java/org/briarproject/briar/android/socialbackup/OwnerRecoveryModeExplainerFragment.java
@@ -0,0 +1,52 @@
+package org.briarproject.briar.android.socialbackup;
+
+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 androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+public class OwnerRecoveryModeExplainerFragment extends BaseFragment {
+
+ public static final String TAG =
+ OwnerRecoveryModeExplainerFragment.class.getName();
+
+ @Override
+ public void onCreate(@Nullable Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ requireActivity().setTitle(R.string.title_recovery_mode);
+ }
+
+ @Nullable
+ @Override
+ public View onCreateView(@NonNull LayoutInflater inflater,
+ @Nullable ViewGroup container,
+ @Nullable Bundle savedInstanceState) {
+ View view = inflater.inflate(R.layout.fragment_recovery_owner_explainer,
+ container, false);
+// Button button = view.findViewById(R.id.button);
+// button.setOnClickListener(e -> {
+// listener.shardsSentDismissed();
+// });
+
+ return view;
+ }
+
+ @Override
+ public void injectFragment(ActivityComponent component) {
+ component.inject(this);
+ }
+
+ @Override
+ public String getUniqueTag() {
+ return TAG;
+ }
+}
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
new file mode 100644
index 000000000..a4a4c3ff2
--- /dev/null
+++ b/briar-android/src/main/java/org/briarproject/briar/android/socialbackup/RecoverActivity.java
@@ -0,0 +1,25 @@
+package org.briarproject.briar.android.socialbackup;
+
+import android.os.Bundle;
+
+import org.briarproject.briar.R;
+import org.briarproject.briar.android.activity.ActivityComponent;
+import org.briarproject.briar.android.activity.BriarActivity;
+import org.briarproject.briar.android.fragment.BaseFragment;
+
+public class RecoverActivity extends BriarActivity implements
+ BaseFragment.BaseFragmentListener {
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_recover);
+
+ OwnerRecoveryModeExplainerFragment fragment = new OwnerRecoveryModeExplainerFragment();
+ showInitialFragment(fragment);
+ }
+ @Override
+ public void injectActivity(ActivityComponent component) {
+ component.inject(this);
+ }
+}
diff --git a/briar-android/src/main/res/layout/activity_recover.xml b/briar-android/src/main/res/layout/activity_recover.xml
new file mode 100644
index 000000000..306502b19
--- /dev/null
+++ b/briar-android/src/main/res/layout/activity_recover.xml
@@ -0,0 +1,8 @@
+
+
+
+
\ No newline at end of file
diff --git a/briar-android/src/main/res/values/strings.xml b/briar-android/src/main/res/values/strings.xml
index 9caff706b..21ee3e5c1 100644
--- a/briar-android/src/main/res/values/strings.xml
+++ b/briar-android/src/main/res/values/strings.xml
@@ -717,4 +717,5 @@
You have sent a social backup shard.
Create new account or recover existing account
+ Recover Account