mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-19 22:29:53 +01:00
Remote wipe activated activity
This commit is contained in:
@@ -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.conversation.event.ConversationMessageReceivedEvent;
|
||||||
import org.briarproject.briar.api.forum.event.ForumPostReceivedEvent;
|
import org.briarproject.briar.api.forum.event.ForumPostReceivedEvent;
|
||||||
import org.briarproject.briar.api.privategroup.event.GroupMessageAddedEvent;
|
import org.briarproject.briar.api.privategroup.event.GroupMessageAddedEvent;
|
||||||
import org.briarproject.briar.api.remotewipe.RemoteWipeActivatedEvent;
|
|
||||||
|
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.concurrent.Callable;
|
import java.util.concurrent.Callable;
|
||||||
|
|||||||
@@ -6,19 +6,36 @@ import org.briarproject.briar.android.activity.ActivityComponent;
|
|||||||
import org.briarproject.briar.android.activity.BriarActivity;
|
import org.briarproject.briar.android.activity.BriarActivity;
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
|
import javax.inject.Inject;
|
||||||
|
|
||||||
|
import androidx.lifecycle.ViewModelProvider;
|
||||||
|
|
||||||
|
|
||||||
public class RemoteWipeActivatedActivity extends BriarActivity {
|
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
|
@Override
|
||||||
public void onCreate(@Nullable Bundle savedInstanceState) {
|
public void onCreate(@Nullable Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
|
||||||
signOut(true, true);
|
viewModel.getConfirmSent()
|
||||||
}
|
.observeEvent(this, confirmed -> {
|
||||||
|
if (confirmed) {
|
||||||
|
signOut(true, true);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
@Override
|
viewModel.sendConfirmMessages();
|
||||||
public void injectActivity(ActivityComponent component) {
|
|
||||||
component.inject(this);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -29,4 +29,10 @@ public abstract class RemoteWipeModule {
|
|||||||
@ViewModelKey(RevokeRemoteWipeViewModel.class)
|
@ViewModelKey(RevokeRemoteWipeViewModel.class)
|
||||||
abstract ViewModel bindRevokeRemoteWipeViewModel(
|
abstract ViewModel bindRevokeRemoteWipeViewModel(
|
||||||
RevokeRemoteWipeViewModel RevokeRemoteWipeViewModel);
|
RevokeRemoteWipeViewModel RevokeRemoteWipeViewModel);
|
||||||
|
|
||||||
|
@Binds
|
||||||
|
@IntoMap
|
||||||
|
@ViewModelKey(RemoteWipeActivatedViewModel.class)
|
||||||
|
abstract ViewModel bindRemoteWipeActivatedViewModel(
|
||||||
|
RemoteWipeActivatedViewModel remoteWipeActivatedViewModel);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user