From ef16d096f1feed37728476e6a7892cb0530336bb Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Tue, 26 Feb 2019 13:32:57 -0300 Subject: [PATCH] [android] add group members to memberlist when they join --- .../memberlist/GroupMemberListActivity.java | 56 ++++++++++++++----- 1 file changed, 42 insertions(+), 14 deletions(-) diff --git a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/memberlist/GroupMemberListActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/memberlist/GroupMemberListActivity.java index 5538a26a4..c4d50d34a 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/memberlist/GroupMemberListActivity.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/memberlist/GroupMemberListActivity.java @@ -7,6 +7,9 @@ import android.view.MenuItem; import android.widget.TextView; import org.briarproject.bramble.api.db.DbException; +import org.briarproject.bramble.api.event.Event; +import org.briarproject.bramble.api.event.EventBus; +import org.briarproject.bramble.api.event.EventListener; import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault; import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault; import org.briarproject.bramble.api.sync.GroupId; @@ -15,6 +18,8 @@ import org.briarproject.briar.android.activity.ActivityComponent; import org.briarproject.briar.android.activity.BriarActivity; import org.briarproject.briar.android.controller.handler.UiResultExceptionHandler; import org.briarproject.briar.android.view.BriarRecyclerView; +import org.briarproject.briar.api.privategroup.JoinMessageHeader; +import org.briarproject.briar.api.privategroup.event.GroupMessageAddedEvent; import java.util.Collection; @@ -23,10 +28,13 @@ import javax.inject.Inject; @MethodsNotNullByDefault @ParametersNotNullByDefault -public class GroupMemberListActivity extends BriarActivity { +public class GroupMemberListActivity extends BriarActivity + implements EventListener { @Inject GroupMemberListController controller; + @Inject + EventBus eventBus; private MemberListAdapter adapter; private BriarRecyclerView list; @@ -61,28 +69,32 @@ public class GroupMemberListActivity extends BriarActivity { @Override public void onStart() { super.onStart(); - controller.loadMembers(groupId, - new UiResultExceptionHandler, DbException>( - this) { - @Override - public void onResultUi(Collection members) { - adapter.addAll(members); - } - - @Override - public void onExceptionUi(DbException exception) { - handleDbException(exception); - } - }); + loadMembers(); + eventBus.addListener(this); list.startPeriodicUpdate(); } @Override public void onStop() { super.onStop(); + eventBus.removeListener(this); list.stopPeriodicUpdate(); } + @Override + public void eventOccurred(Event e) { + if (e instanceof GroupMessageAddedEvent) { + // we can't use GroupInvitationResponseReceivedEvent, because + // a peer only becomes a member after joining the group by message + GroupMessageAddedEvent ge = (GroupMessageAddedEvent) e; + if (ge.getGroupId().equals(this.groupId) && + ge.getHeader() instanceof JoinMessageHeader) { + loadMembers(); + } + } + // TODO ContactConnectedEvent and ContactDisconnectedEvent + } + @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { @@ -94,4 +106,20 @@ public class GroupMemberListActivity extends BriarActivity { } } + private void loadMembers() { + controller.loadMembers(groupId, + new UiResultExceptionHandler, DbException>( + this) { + @Override + public void onResultUi(Collection members) { + adapter.addAll(members); + } + + @Override + public void onExceptionUi(DbException exception) { + handleDbException(exception); + } + }); + } + }