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 6b37f745c..dbdab74cd 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 @@ -38,11 +38,11 @@ public class RemoteWipeSetupActivity extends BriarActivity implements public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_distributed_backup); - if (viewModel.remoteWipeIsSetup()) { - showInitialFragment(new RemoteWipeDisplayFragment()); - } else { +// if (viewModel.remoteWipeIsSetup()) { +// showInitialFragment(new RemoteWipeDisplayFragment()); +// } else { showInitialFragment(WiperSelectorFragment.newInstance()); - } +// } } 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 cf98291b3..cd436a2a6 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 @@ -45,11 +45,20 @@ public class RemoteWipeSetupViewModel extends AndroidViewModel { } } + public List getWiperContactIds() { + try { + return db.transactionWithResult(true, + remoteWipeManager::getWiperContactIds); + } catch (DbException ignored) { + return new ArrayList(); + } + } + public List getWiperNames() { ArrayList wiperNames = new ArrayList(); try { List wipers = db.transactionWithResult(true, - txn -> remoteWipeManager.getWipers(txn)); + remoteWipeManager::getWipers); for (Author wiper : wipers) { wiperNames.add(wiper.getName()); } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/remotewipe/WiperSelectorFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/remotewipe/WiperSelectorFragment.java index fd93a37cc..9b094d1da 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/remotewipe/WiperSelectorFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/remotewipe/WiperSelectorFragment.java @@ -4,6 +4,7 @@ import android.os.Bundle; import android.view.MenuItem; import android.widget.Toast; +import org.briarproject.bramble.api.contact.ContactId; import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault; import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault; import org.briarproject.briar.R; @@ -14,9 +15,13 @@ import org.briarproject.briar.android.contactselection.ContactSelectorFragment; import org.briarproject.briar.android.contactselection.SelectableContactItem; import org.briarproject.briar.android.socialbackup.creation.CreateBackupController; +import java.util.ArrayList; +import java.util.List; + import javax.inject.Inject; import androidx.annotation.Nullable; +import androidx.lifecycle.ViewModelProvider; @MethodsNotNullByDefault @ParametersNotNullByDefault @@ -24,6 +29,11 @@ public class WiperSelectorFragment extends ContactSelectorFragment { public static final String TAG = WiperSelectorFragment.class.getName(); + @Inject + ViewModelProvider.Factory viewModelFactory; + + private RemoteWipeSetupViewModel viewModel; + @Inject CreateBackupController controller; @@ -40,12 +50,14 @@ public class WiperSelectorFragment extends ContactSelectorFragment { @Override public void injectFragment(ActivityComponent component) { component.inject(this); + viewModel = new ViewModelProvider(requireActivity(), viewModelFactory) + .get(RemoteWipeSetupViewModel.class); } @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); - + selectedContacts.addAll(viewModel.getWiperContactIds()); requireActivity().setTitle(R.string.title_select_wipers); } diff --git a/briar-api/src/main/java/org/briarproject/briar/api/remotewipe/RemoteWipeManager.java b/briar-api/src/main/java/org/briarproject/briar/api/remotewipe/RemoteWipeManager.java index 69002079b..480d03d71 100644 --- a/briar-api/src/main/java/org/briarproject/briar/api/remotewipe/RemoteWipeManager.java +++ b/briar-api/src/main/java/org/briarproject/briar/api/remotewipe/RemoteWipeManager.java @@ -56,6 +56,8 @@ public interface RemoteWipeManager extends ConversationManager.ConversationClien List getWipers(Transaction txn) throws DbException; + List getWiperContactIds(Transaction txn); + @Override Collection getMessageHeaders( Transaction txn, ContactId contactId) throws DbException; diff --git a/briar-core/src/main/java/org/briarproject/briar/remotewipe/RemoteWipeManagerImpl.java b/briar-core/src/main/java/org/briarproject/briar/remotewipe/RemoteWipeManagerImpl.java index a472b0584..1ab8ac222 100644 --- a/briar-core/src/main/java/org/briarproject/briar/remotewipe/RemoteWipeManagerImpl.java +++ b/briar-core/src/main/java/org/briarproject/briar/remotewipe/RemoteWipeManagerImpl.java @@ -565,4 +565,27 @@ public class RemoteWipeManagerImpl extends ConversationClientImpl throw new DbException(e); } } + + public List getWiperContactIds(Transaction txn) { + ArrayList wiperContactIds = new ArrayList<>(); + try { + List wipers = getWipers(txn); + for (Author wiper : wipers) { + wiperContactIds.add(authorToContactId(txn, wiper)); + } + } catch (DbException ignored) { + // Will return an empty list + } + return wiperContactIds; + } + + private ContactId authorToContactId(Transaction txn, Author author) + throws DbException { + ArrayList contacts = + (ArrayList) contactManager.getContacts(txn); + for (Contact c : contacts) { + if (c.getAuthor().equals(author)) return c.getId(); + } + throw new DbException(); + } }