From f3d628afa76976d1e19e9f69a7b53c946c1b72e4 Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Tue, 2 Mar 2021 11:13:48 -0300 Subject: [PATCH] Render automatic declines differently in the UI and show them as they happen via an Event --- .../android/conversation/ConversationVisitor.java | 4 ++++ briar-android/src/main/res/values/strings.xml | 1 + .../invitation/AbstractProtocolEngine.java | 15 +++++++++++++++ 3 files changed, 20 insertions(+) diff --git a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationVisitor.java b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationVisitor.java index 756c8535e..0b9b48bd9 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationVisitor.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationVisitor.java @@ -209,6 +209,10 @@ class ConversationVisitor implements text = ctx.getString( R.string.groups_invitations_response_accepted_sent, contactName.getValue()); + } else if (r.isAutoDecline()) { + text = ctx.getString( + R.string.groups_invitations_response_declined_auto, + contactName.getValue()); } else { text = ctx.getString( R.string.groups_invitations_response_declined_sent, diff --git a/briar-android/src/main/res/values/strings.xml b/briar-android/src/main/res/values/strings.xml index eb2c8296f..b4eb273b1 100644 --- a/briar-android/src/main/res/values/strings.xml +++ b/briar-android/src/main/res/values/strings.xml @@ -365,6 +365,7 @@ You accepted the group invitation from %s. You declined the group invitation from %s. + The group invitation from %s was automatically declined. %s accepted the group invitation. %s declined the group invitation. Only the creator can invite new members to the group. Below are all current members of the group. diff --git a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/AbstractProtocolEngine.java b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/AbstractProtocolEngine.java index 9efabfa1f..906f4abc8 100644 --- a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/AbstractProtocolEngine.java +++ b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/AbstractProtocolEngine.java @@ -7,6 +7,7 @@ import org.briarproject.bramble.api.data.BdfDictionary; import org.briarproject.bramble.api.db.DatabaseComponent; import org.briarproject.bramble.api.db.DbException; import org.briarproject.bramble.api.db.Transaction; +import org.briarproject.bramble.api.event.Event; import org.briarproject.bramble.api.identity.IdentityManager; import org.briarproject.bramble.api.identity.LocalAuthor; import org.briarproject.bramble.api.nullsafety.NotNullByDefault; @@ -19,13 +20,16 @@ import org.briarproject.bramble.api.system.Clock; import org.briarproject.bramble.api.versioning.ClientVersioningManager; import org.briarproject.briar.api.autodelete.AutoDeleteManager; import org.briarproject.briar.api.client.MessageTracker; +import org.briarproject.briar.api.client.SessionId; import org.briarproject.briar.api.conversation.ConversationManager; import org.briarproject.briar.api.privategroup.GroupMessage; import org.briarproject.briar.api.privategroup.GroupMessageFactory; import org.briarproject.briar.api.privategroup.PrivateGroup; import org.briarproject.briar.api.privategroup.PrivateGroupFactory; import org.briarproject.briar.api.privategroup.PrivateGroupManager; +import org.briarproject.briar.api.privategroup.event.GroupInvitationResponseReceivedEvent; import org.briarproject.briar.api.privategroup.invitation.GroupInvitationManager; +import org.briarproject.briar.api.privategroup.invitation.GroupInvitationResponse; import java.util.Collection; @@ -208,6 +212,17 @@ abstract class AbstractProtocolEngine> if (timer != NO_AUTO_DELETE_TIMER) { db.setCleanupTimerDuration(txn, m.getId(), timer); } + if (isAutoDecline) { + // Broadcast an event, so the auto-decline becomes visible + SessionId sessionId = + new SessionId(s.getPrivateGroupId().getBytes()); + GroupInvitationResponse response = new GroupInvitationResponse( + m.getId(), s.getContactGroupId(), m.getTimestamp(), + true, true, false, false, sessionId, false, + s.getPrivateGroupId(), timer, true); + Event e = new GroupInvitationResponseReceivedEvent(response, c); + txn.attach(e); + } } else { m = messageEncoder.encodeLeaveMessage(s.getContactGroupId(), s.getPrivateGroupId(), localTimestamp,