mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-12 10:49:06 +01:00
RemoteWipeModule should register with ClientVersioningManager, add contact hook
This commit is contained in:
@@ -46,7 +46,8 @@ import static org.briarproject.briar.socialbackup.SocialBackupConstants.MSG_KEY_
|
||||
import static org.briarproject.briar.socialbackup.SocialBackupConstants.MSG_KEY_TIMESTAMP;
|
||||
|
||||
public class RemoteWipeManagerImpl extends ConversationClientImpl
|
||||
implements RemoteWipeManager, LifecycleManager.OpenDatabaseHook {
|
||||
implements RemoteWipeManager, ContactManager.ContactHook,
|
||||
ClientVersioningManager.ClientVersioningHook, LifecycleManager.OpenDatabaseHook {
|
||||
|
||||
private final ClientVersioningManager clientVersioningManager;
|
||||
private final Group localGroup;
|
||||
@@ -79,17 +80,7 @@ public class RemoteWipeManagerImpl extends ConversationClientImpl
|
||||
if (db.containsGroup(txn, localGroup.getId())) return;
|
||||
db.addGroup(txn, localGroup);
|
||||
// Set things up for any pre-existing contacts
|
||||
for (Contact c : db.getContacts(txn)) {
|
||||
// Create a group to share with the contact
|
||||
Group g = getContactGroup(c);
|
||||
db.addGroup(txn, g);
|
||||
// Apply the client's visibility to the contact group
|
||||
Group.Visibility client = clientVersioningManager.getClientVisibility(txn,
|
||||
c.getId(), CLIENT_ID, MAJOR_VERSION);
|
||||
db.setGroupVisibility(txn, c.getId(), g.getId(), client);
|
||||
// Attach the contact ID to the group
|
||||
setContactId(txn, g.getId(), c.getId());
|
||||
}
|
||||
for (Contact c : db.getContacts(txn)) addingContact(txn, c);
|
||||
}
|
||||
|
||||
private void setContactId(Transaction txn, GroupId g, ContactId c)
|
||||
@@ -277,4 +268,30 @@ public class RemoteWipeManagerImpl extends ConversationClientImpl
|
||||
throw new DbException(e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClientVisibilityChanging(Transaction txn, Contact c,
|
||||
Group.Visibility v) throws DbException {
|
||||
// Apply the client's visibility to the contact group
|
||||
Group g = getContactGroup(c);
|
||||
db.setGroupVisibility(txn, c.getId(), g.getId(), v);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addingContact(Transaction txn, Contact c) throws DbException {
|
||||
// Create a group to share with the contact
|
||||
Group g = getContactGroup(c);
|
||||
db.addGroup(txn, g);
|
||||
// Apply the client's visibility to the contact group
|
||||
Group.Visibility client = clientVersioningManager.getClientVisibility(txn,
|
||||
c.getId(), CLIENT_ID, MAJOR_VERSION);
|
||||
db.setGroupVisibility(txn, c.getId(), g.getId(), client);
|
||||
// Attach the contact ID to the group
|
||||
setContactId(txn, g.getId(), c.getId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removingContact(Transaction txn, Contact c) throws DbException {
|
||||
db.removeGroup(txn, getContactGroup(c));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
package org.briarproject.briar.remotewipe;
|
||||
|
||||
import org.briarproject.bramble.api.contact.ContactManager;
|
||||
import org.briarproject.bramble.api.lifecycle.LifecycleManager;
|
||||
import org.briarproject.bramble.api.sync.validation.ValidationManager;
|
||||
import org.briarproject.bramble.api.versioning.ClientVersioningManager;
|
||||
import org.briarproject.briar.api.conversation.ConversationManager;
|
||||
import org.briarproject.briar.api.remotewipe.RemoteWipeManager;
|
||||
|
||||
@@ -11,6 +13,10 @@ import javax.inject.Singleton;
|
||||
import dagger.Module;
|
||||
import dagger.Provides;
|
||||
|
||||
import static org.briarproject.briar.api.socialbackup.SocialBackupManager.CLIENT_ID;
|
||||
import static org.briarproject.briar.api.socialbackup.SocialBackupManager.MAJOR_VERSION;
|
||||
import static org.briarproject.briar.api.socialbackup.SocialBackupManager.MINOR_VERSION;
|
||||
|
||||
@Module
|
||||
public class RemoteWipeModule {
|
||||
public static class EagerSingletons {
|
||||
@@ -24,11 +30,17 @@ public class RemoteWipeModule {
|
||||
LifecycleManager lifecycleManager,
|
||||
ValidationManager validationManager,
|
||||
ConversationManager conversationManager,
|
||||
ContactManager contactManager,
|
||||
ClientVersioningManager clientVersioningManager,
|
||||
RemoteWipeManagerImpl remoteWipeManager) {
|
||||
lifecycleManager.registerOpenDatabaseHook(remoteWipeManager);
|
||||
validationManager
|
||||
.registerIncomingMessageHook(RemoteWipeManager.CLIENT_ID,
|
||||
RemoteWipeManager.MAJOR_VERSION, remoteWipeManager);
|
||||
|
||||
contactManager.registerContactHook(remoteWipeManager);
|
||||
clientVersioningManager.registerClient(CLIENT_ID, MAJOR_VERSION,
|
||||
MINOR_VERSION, remoteWipeManager);
|
||||
conversationManager.registerConversationClient(remoteWipeManager);
|
||||
return remoteWipeManager;
|
||||
}
|
||||
|
||||
@@ -89,6 +89,7 @@ public class RemoteWipeIntegrationTest extends BriarIntegrationTest<BriarIntegra
|
||||
Collection<ConversationMessageHeader> messages0At1 =
|
||||
getMessages0At1();
|
||||
assertEquals(1, messages0At1.size());
|
||||
System.out.println("mmmm" + messages0At1.size());
|
||||
for (ConversationMessageHeader h : messages0At1) {
|
||||
assertTrue(h instanceof RemoteWipeMessageHeader);
|
||||
RemoteWipeMessageHeader r = (RemoteWipeMessageHeader) h;
|
||||
|
||||
Reference in New Issue
Block a user