[android] add group members to memberlist when they join

This commit is contained in:
Torsten Grote
2019-02-26 13:32:57 -03:00
parent 679455888b
commit ef16d096f1

View File

@@ -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<Collection<MemberListItem>, DbException>(
this) {
@Override
public void onResultUi(Collection<MemberListItem> 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<Collection<MemberListItem>, DbException>(
this) {
@Override
public void onResultUi(Collection<MemberListItem> members) {
adapter.addAll(members);
}
@Override
public void onExceptionUi(DbException exception) {
handleDbException(exception);
}
});
}
}