RemoteWipeModule should register with ClientVersioningManager, add contact hook

This commit is contained in:
ameba23
2021-05-06 13:48:53 +02:00
parent 014db8d45f
commit ae1ad4be24
3 changed files with 42 additions and 12 deletions

View File

@@ -46,7 +46,8 @@ import static org.briarproject.briar.socialbackup.SocialBackupConstants.MSG_KEY_
import static org.briarproject.briar.socialbackup.SocialBackupConstants.MSG_KEY_TIMESTAMP; import static org.briarproject.briar.socialbackup.SocialBackupConstants.MSG_KEY_TIMESTAMP;
public class RemoteWipeManagerImpl extends ConversationClientImpl public class RemoteWipeManagerImpl extends ConversationClientImpl
implements RemoteWipeManager, LifecycleManager.OpenDatabaseHook { implements RemoteWipeManager, ContactManager.ContactHook,
ClientVersioningManager.ClientVersioningHook, LifecycleManager.OpenDatabaseHook {
private final ClientVersioningManager clientVersioningManager; private final ClientVersioningManager clientVersioningManager;
private final Group localGroup; private final Group localGroup;
@@ -79,17 +80,7 @@ public class RemoteWipeManagerImpl extends ConversationClientImpl
if (db.containsGroup(txn, localGroup.getId())) return; if (db.containsGroup(txn, localGroup.getId())) return;
db.addGroup(txn, localGroup); db.addGroup(txn, localGroup);
// Set things up for any pre-existing contacts // Set things up for any pre-existing contacts
for (Contact c : db.getContacts(txn)) { for (Contact c : db.getContacts(txn)) addingContact(txn, c);
// 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());
}
} }
private void setContactId(Transaction txn, GroupId g, ContactId c) private void setContactId(Transaction txn, GroupId g, ContactId c)
@@ -277,4 +268,30 @@ public class RemoteWipeManagerImpl extends ConversationClientImpl
throw new DbException(e); 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));
}
} }

View File

@@ -1,7 +1,9 @@
package org.briarproject.briar.remotewipe; package org.briarproject.briar.remotewipe;
import org.briarproject.bramble.api.contact.ContactManager;
import org.briarproject.bramble.api.lifecycle.LifecycleManager; import org.briarproject.bramble.api.lifecycle.LifecycleManager;
import org.briarproject.bramble.api.sync.validation.ValidationManager; 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.conversation.ConversationManager;
import org.briarproject.briar.api.remotewipe.RemoteWipeManager; import org.briarproject.briar.api.remotewipe.RemoteWipeManager;
@@ -11,6 +13,10 @@ import javax.inject.Singleton;
import dagger.Module; import dagger.Module;
import dagger.Provides; 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 @Module
public class RemoteWipeModule { public class RemoteWipeModule {
public static class EagerSingletons { public static class EagerSingletons {
@@ -24,11 +30,17 @@ public class RemoteWipeModule {
LifecycleManager lifecycleManager, LifecycleManager lifecycleManager,
ValidationManager validationManager, ValidationManager validationManager,
ConversationManager conversationManager, ConversationManager conversationManager,
ContactManager contactManager,
ClientVersioningManager clientVersioningManager,
RemoteWipeManagerImpl remoteWipeManager) { RemoteWipeManagerImpl remoteWipeManager) {
lifecycleManager.registerOpenDatabaseHook(remoteWipeManager); lifecycleManager.registerOpenDatabaseHook(remoteWipeManager);
validationManager validationManager
.registerIncomingMessageHook(RemoteWipeManager.CLIENT_ID, .registerIncomingMessageHook(RemoteWipeManager.CLIENT_ID,
RemoteWipeManager.MAJOR_VERSION, remoteWipeManager); RemoteWipeManager.MAJOR_VERSION, remoteWipeManager);
contactManager.registerContactHook(remoteWipeManager);
clientVersioningManager.registerClient(CLIENT_ID, MAJOR_VERSION,
MINOR_VERSION, remoteWipeManager);
conversationManager.registerConversationClient(remoteWipeManager); conversationManager.registerConversationClient(remoteWipeManager);
return remoteWipeManager; return remoteWipeManager;
} }

View File

@@ -89,6 +89,7 @@ public class RemoteWipeIntegrationTest extends BriarIntegrationTest<BriarIntegra
Collection<ConversationMessageHeader> messages0At1 = Collection<ConversationMessageHeader> messages0At1 =
getMessages0At1(); getMessages0At1();
assertEquals(1, messages0At1.size()); assertEquals(1, messages0At1.size());
System.out.println("mmmm" + messages0At1.size());
for (ConversationMessageHeader h : messages0At1) { for (ConversationMessageHeader h : messages0At1) {
assertTrue(h instanceof RemoteWipeMessageHeader); assertTrue(h instanceof RemoteWipeMessageHeader);
RemoteWipeMessageHeader r = (RemoteWipeMessageHeader) h; RemoteWipeMessageHeader r = (RemoteWipeMessageHeader) h;