diff --git a/briar-android/src/main/java/org/briarproject/briar/android/removabledrive/ReceiveFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/removabledrive/ReceiveFragment.java index f56a3184c..14e6cdb1a 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/removabledrive/ReceiveFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/removabledrive/ReceiveFragment.java @@ -103,7 +103,8 @@ public class ReceiveFragment extends Fragment { // to prevent duplicates on the back stack. getParentFragmentManager().popBackStack(); // Start again (picks up existing task or allows to start a new one) - viewModel.startReceiveData(); + // unless the activity was recreated after the app was killed + if (viewModel.isAccountSignedIn()) viewModel.startReceiveData(); } } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/removabledrive/RemovableDriveViewModel.java b/briar-android/src/main/java/org/briarproject/briar/android/removabledrive/RemovableDriveViewModel.java index 525d199a8..142526eef 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/removabledrive/RemovableDriveViewModel.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/removabledrive/RemovableDriveViewModel.java @@ -4,6 +4,7 @@ import android.app.Application; import android.net.Uri; import org.briarproject.bramble.api.Consumer; +import org.briarproject.bramble.api.account.AccountManager; import org.briarproject.bramble.api.contact.ContactId; import org.briarproject.bramble.api.db.DatabaseExecutor; import org.briarproject.bramble.api.db.DbException; @@ -32,6 +33,7 @@ import androidx.lifecycle.MutableLiveData; import static java.util.Locale.US; import static java.util.Objects.requireNonNull; +import static org.briarproject.bramble.api.lifecycle.LifecycleManager.LifecycleState.STARTING_SERVICES; import static org.briarproject.bramble.api.plugin.file.RemovableDriveConstants.PROP_URI; @UiThread @@ -40,6 +42,7 @@ class RemovableDriveViewModel extends DbViewModel { enum Action {SEND, RECEIVE} + private final AccountManager accountManager; private final RemovableDriveManager manager; private final MutableLiveEvent action = new MutableLiveEvent<>(); @@ -61,8 +64,10 @@ class RemovableDriveViewModel extends DbViewModel { LifecycleManager lifecycleManager, TransactionManager db, AndroidExecutor androidExecutor, + AccountManager accountManager, RemovableDriveManager removableDriveManager) { super(app, dbExecutor, lifecycleManager, db, androidExecutor); + this.accountManager = accountManager; this.manager = removableDriveManager; } @@ -193,4 +198,8 @@ class RemovableDriveViewModel extends DbViewModel { return state; } + boolean isAccountSignedIn() { + return accountManager.hasDatabaseKey() && + lifecycleManager.getLifecycleState().isAfter(STARTING_SERVICES); + } } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/removabledrive/SendFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/removabledrive/SendFragment.java index d1235ff17..ff5166290 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/removabledrive/SendFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/removabledrive/SendFragment.java @@ -109,7 +109,8 @@ public class SendFragment extends Fragment { // to prevent duplicates on the back stack. getParentFragmentManager().popBackStack(); // Start again (picks up existing task or allows to start a new one) - viewModel.startSendData(); + // unless the activity was recreated after the app was killed + if (viewModel.isAccountSignedIn()) viewModel.startSendData(); } } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/viewmodel/DbViewModel.java b/briar-android/src/main/java/org/briarproject/briar/android/viewmodel/DbViewModel.java index 6e39b347c..583a42f16 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/viewmodel/DbViewModel.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/viewmodel/DbViewModel.java @@ -44,7 +44,7 @@ public abstract class DbViewModel extends AndroidViewModel { @DatabaseExecutor private final Executor dbExecutor; - private final LifecycleManager lifecycleManager; + protected final LifecycleManager lifecycleManager; private final TransactionManager db; protected final AndroidExecutor androidExecutor;