diff --git a/briar-core/src/main/java/org/briarproject/briar/handshakekeyexchange/HandshakeKeyExchangeManagerImpl.java b/briar-core/src/main/java/org/briarproject/briar/handshakekeyexchange/HandshakeKeyExchangeManagerImpl.java index e3ed70d94..66ab7a8ce 100644 --- a/briar-core/src/main/java/org/briarproject/briar/handshakekeyexchange/HandshakeKeyExchangeManagerImpl.java +++ b/briar-core/src/main/java/org/briarproject/briar/handshakekeyexchange/HandshakeKeyExchangeManagerImpl.java @@ -44,7 +44,7 @@ import static org.briarproject.briar.handshakekeyexchange.HandshakeKeyExchangeCo public class HandshakeKeyExchangeManagerImpl extends ConversationClientImpl implements HandshakeKeyExchangeManager, LifecycleManager.OpenDatabaseHook, - ContactManager.ContactHook { + ContactManager.ContactHook, ClientVersioningManager.ClientVersioningHook { private final ClientVersioningManager clientVersioningManager; private final ContactGroupFactory contactGroupFactory; @@ -230,4 +230,12 @@ public class HandshakeKeyExchangeManagerImpl extends ConversationClientImpl throw new AssertionError(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); + } } diff --git a/briar-core/src/main/java/org/briarproject/briar/handshakekeyexchange/HandshakeKeyExchangeModule.java b/briar-core/src/main/java/org/briarproject/briar/handshakekeyexchange/HandshakeKeyExchangeModule.java index 011b4a7c4..925b80e7c 100644 --- a/briar-core/src/main/java/org/briarproject/briar/handshakekeyexchange/HandshakeKeyExchangeModule.java +++ b/briar-core/src/main/java/org/briarproject/briar/handshakekeyexchange/HandshakeKeyExchangeModule.java @@ -1,5 +1,10 @@ package org.briarproject.briar.handshakekeyexchange; +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.handshakekeyexchange.HandshakeKeyExchangeManager; import javax.inject.Inject; @@ -17,7 +22,23 @@ public class HandshakeKeyExchangeModule { @Provides @Singleton - HandshakeKeyExchangeManager handshakeKeyExchangeManager(HandshakeKeyExchangeManagerImpl handshakeKeyExchangeManager) { + HandshakeKeyExchangeManager handshakeKeyExchangeManager( + LifecycleManager lifecycleManager, + ValidationManager validationManager, + ContactManager contactManager, + ClientVersioningManager clientVersioningManager, + ConversationManager conversationManager, + HandshakeKeyExchangeManagerImpl handshakeKeyExchangeManager) { + + lifecycleManager.registerOpenDatabaseHook(handshakeKeyExchangeManager); + validationManager + .registerIncomingMessageHook(HandshakeKeyExchangeManager.CLIENT_ID, + HandshakeKeyExchangeManager.MAJOR_VERSION, handshakeKeyExchangeManager); + + contactManager.registerContactHook(handshakeKeyExchangeManager); + clientVersioningManager.registerClient(HandshakeKeyExchangeManager.CLIENT_ID, HandshakeKeyExchangeManager.MAJOR_VERSION, + HandshakeKeyExchangeManager.MINOR_VERSION, handshakeKeyExchangeManager); + conversationManager.registerConversationClient(handshakeKeyExchangeManager); return handshakeKeyExchangeManager; } }