From 3a2205123f1b3c1fba6a4721196aeff1f2aa1e89 Mon Sep 17 00:00:00 2001 From: akwizgran <akwizgran@users.sourceforge.net> Date: Fri, 11 Nov 2016 13:49:49 +0000 Subject: [PATCH] Added a method for revealing a contact to a private group. --- .../invitation/GroupInvitationManager.java | 6 +++++ .../GroupInvitationManagerImpl.java | 24 +++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/briar-api/src/org/briarproject/api/privategroup/invitation/GroupInvitationManager.java b/briar-api/src/org/briarproject/api/privategroup/invitation/GroupInvitationManager.java index 489e51a591..2a4d4539f3 100644 --- a/briar-api/src/org/briarproject/api/privategroup/invitation/GroupInvitationManager.java +++ b/briar-api/src/org/briarproject/api/privategroup/invitation/GroupInvitationManager.java @@ -42,6 +42,12 @@ public interface GroupInvitationManager { void respondToInvitation(ContactId c, SessionId s, boolean accept) throws DbException; + /** + * Makes the user's relationship with the given contact visible to the + * given private group. + */ + void revealRelationship(ContactId c, GroupId g) throws DbException; + /** * Returns all private group invitation messages related to the given * contact. diff --git a/briar-core/src/org/briarproject/privategroup/invitation/GroupInvitationManagerImpl.java b/briar-core/src/org/briarproject/privategroup/invitation/GroupInvitationManagerImpl.java index ae11b48b85..bc6dd88f6d 100644 --- a/briar-core/src/org/briarproject/privategroup/invitation/GroupInvitationManagerImpl.java +++ b/briar-core/src/org/briarproject/privategroup/invitation/GroupInvitationManagerImpl.java @@ -315,6 +315,30 @@ class GroupInvitationManagerImpl extends ConversationClientImpl } } + @Override + public void revealRelationship(ContactId c, GroupId g) throws DbException { + Transaction txn = db.startTransaction(false); + try { + // Look up the session + Contact contact = db.getContact(txn, c); + GroupId contactGroupId = getContactGroup(contact).getId(); + StoredSession ss = getSession(txn, contactGroupId, getSessionId(g)); + if (ss == null) throw new IllegalArgumentException(); + // Parse the session + PeerSession session = sessionParser + .parsePeerSession(contactGroupId, ss.bdfSession); + // Handle the join action + session = peerEngine.onJoinAction(txn, session); + // Store the updated session + storeSession(txn, ss.storageId, session); + db.commitTransaction(txn); + } catch (FormatException e) { + throw new DbException(e); + } finally { + db.endTransaction(txn); + } + } + private <S extends Session> S handleAction(Transaction txn, LocalAction type, S session, ProtocolEngine<S> engine) throws DbException, FormatException { -- GitLab