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;
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));
}
}

View File

@@ -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;
}

View File

@@ -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;