Remote wipe activated activity

This commit is contained in:
ameba23
2022-02-24 13:00:45 +01:00
parent 4453d7b36d
commit a6b85e5979
4 changed files with 89 additions and 7 deletions

View File

@@ -41,7 +41,6 @@ import org.briarproject.briar.api.blog.event.BlogPostAddedEvent;
import org.briarproject.briar.api.conversation.event.ConversationMessageReceivedEvent;
import org.briarproject.briar.api.forum.event.ForumPostReceivedEvent;
import org.briarproject.briar.api.privategroup.event.GroupMessageAddedEvent;
import org.briarproject.briar.api.remotewipe.RemoteWipeActivatedEvent;
import java.util.Set;
import java.util.concurrent.Callable;

View File

@@ -6,19 +6,36 @@ import org.briarproject.briar.android.activity.ActivityComponent;
import org.briarproject.briar.android.activity.BriarActivity;
import javax.annotation.Nullable;
import javax.inject.Inject;
import androidx.lifecycle.ViewModelProvider;
public class RemoteWipeActivatedActivity extends BriarActivity {
@Inject
ViewModelProvider.Factory viewModelFactory;
RemoteWipeActivatedViewModel viewModel;
@Override
public void injectActivity(ActivityComponent component) {
component.inject(this);
viewModel = new ViewModelProvider(this, viewModelFactory)
.get(RemoteWipeActivatedViewModel.class);
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
signOut(true, true);
}
viewModel.getConfirmSent()
.observeEvent(this, confirmed -> {
if (confirmed) {
signOut(true, true);
}
});
@Override
public void injectActivity(ActivityComponent component) {
component.inject(this);
viewModel.sendConfirmMessages();
}
}

View File

@@ -1,2 +1,62 @@
package org.briarproject.briar.android.remotewipe;public class RemoteWipeActivatedViewModel {
package org.briarproject.briar.android.remotewipe;
import android.app.Application;
import org.briarproject.bramble.api.FormatException;
import org.briarproject.bramble.api.db.DatabaseComponent;
import org.briarproject.bramble.api.db.DbException;
import org.briarproject.bramble.api.event.Event;
import org.briarproject.bramble.api.event.EventBus;
import org.briarproject.bramble.api.event.EventListener;
import org.briarproject.bramble.api.sync.event.MessagesSentEvent;
import org.briarproject.briar.android.viewmodel.LiveEvent;
import org.briarproject.briar.android.viewmodel.MutableLiveEvent;
import org.briarproject.briar.api.remotewipe.RemoteWipeManager;
import javax.inject.Inject;
import androidx.annotation.NonNull;
import androidx.lifecycle.AndroidViewModel;
public class RemoteWipeActivatedViewModel extends AndroidViewModel implements
EventListener {
private final RemoteWipeManager remoteWipeManager;
private final DatabaseComponent db;
private final MutableLiveEvent<Boolean> confirmSent =
new MutableLiveEvent<>();
@Inject
RemoteWipeActivatedViewModel(
@NonNull Application application,
RemoteWipeManager remoteWipeManager,
DatabaseComponent db, EventBus eventBus) {
super(application);
this.remoteWipeManager = remoteWipeManager;
this.db = db;
eventBus.addListener(this);
}
public void sendConfirmMessages() {
try {
db.transaction(false,
remoteWipeManager::sendConfirmMessages);
} catch (DbException | FormatException e) {
System.out.println(e);
// If there is a problem sending the messages, just wipe
confirmSent.postEvent(true);
}
}
public LiveEvent<Boolean> getConfirmSent() {
return confirmSent;
}
@Override
public void eventOccurred(Event e) {
// As soon as we know a message is sent, we can wipe
if (e instanceof MessagesSentEvent) {
confirmSent.postEvent(true);
}
}
}

View File

@@ -29,4 +29,10 @@ public abstract class RemoteWipeModule {
@ViewModelKey(RevokeRemoteWipeViewModel.class)
abstract ViewModel bindRevokeRemoteWipeViewModel(
RevokeRemoteWipeViewModel RevokeRemoteWipeViewModel);
@Binds
@IntoMap
@ViewModelKey(RemoteWipeActivatedViewModel.class)
abstract ViewModel bindRemoteWipeActivatedViewModel(
RemoteWipeActivatedViewModel remoteWipeActivatedViewModel);
}