diff --git a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupItem.java b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupItem.java index 03a9d40b07a345396dfdc3ef615c1a9e1f629d1e..e4a69c3660216e22ddbc8e0b6c24eac227dfb63d 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupItem.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupItem.java @@ -1,6 +1,7 @@ package org.briarproject.briar.android.privategroup.list; import org.briarproject.bramble.api.identity.Author; +import org.briarproject.bramble.api.identity.AuthorInfo; import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.bramble.api.sync.GroupId; import org.briarproject.briar.api.client.MessageTracker.GroupCount; @@ -12,12 +13,15 @@ import org.briarproject.briar.api.privategroup.PrivateGroup; class GroupItem { private final PrivateGroup privateGroup; + private final AuthorInfo authorInfo; private int messageCount, unreadCount; private long timestamp; private boolean dissolved; - GroupItem(PrivateGroup privateGroup, GroupCount count, boolean dissolved) { + GroupItem(PrivateGroup privateGroup, AuthorInfo authorInfo, + GroupCount count, boolean dissolved) { this.privateGroup = privateGroup; + this.authorInfo = authorInfo; this.messageCount = count.getMsgCount(); this.unreadCount = count.getUnreadCount(); this.timestamp = count.getLatestMsgTime(); @@ -46,6 +50,10 @@ class GroupItem { return privateGroup.getCreator(); } + AuthorInfo getCreatorInfo() { + return authorInfo; + } + String getName() { return privateGroup.getName(); } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupListControllerImpl.java b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupListControllerImpl.java index b568fdcef5a431655e814ec82d9ccb1ac13376f4..e60f6ebd3e682fa53f5ff0f76356ed8a44be1d2b 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupListControllerImpl.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupListControllerImpl.java @@ -2,12 +2,15 @@ package org.briarproject.briar.android.privategroup.list; import android.support.annotation.CallSuper; +import org.briarproject.bramble.api.contact.ContactManager; import org.briarproject.bramble.api.db.DatabaseExecutor; import org.briarproject.bramble.api.db.DbException; import org.briarproject.bramble.api.db.NoSuchGroupException; 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.identity.AuthorId; +import org.briarproject.bramble.api.identity.AuthorInfo; import org.briarproject.bramble.api.lifecycle.LifecycleManager; import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault; import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault; @@ -30,7 +33,9 @@ import org.briarproject.briar.api.privategroup.invitation.GroupInvitationManager import java.util.ArrayList; import java.util.Collection; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.concurrent.Executor; import java.util.logging.Logger; @@ -52,6 +57,7 @@ class GroupListControllerImpl extends DbControllerImpl private final PrivateGroupManager groupManager; private final GroupInvitationManager groupInvitationManager; + private final ContactManager contactManager; private final AndroidNotificationManager notificationManager; private final EventBus eventBus; @@ -61,10 +67,12 @@ class GroupListControllerImpl extends DbControllerImpl GroupListControllerImpl(@DatabaseExecutor Executor dbExecutor, LifecycleManager lifecycleManager, PrivateGroupManager groupManager, GroupInvitationManager groupInvitationManager, + ContactManager contactManager, AndroidNotificationManager notificationManager, EventBus eventBus) { super(dbExecutor, lifecycleManager); this.groupManager = groupManager; this.groupInvitationManager = groupInvitationManager; + this.contactManager = contactManager; this.notificationManager = notificationManager; this.eventBus = eventBus; } @@ -153,12 +161,22 @@ class GroupListControllerImpl extends DbControllerImpl Collection<PrivateGroup> groups = groupManager.getPrivateGroups(); List<GroupItem> items = new ArrayList<>(groups.size()); + Map<AuthorId, AuthorInfo> authorInfos = new HashMap<>(); for (PrivateGroup g : groups) { try { GroupId id = g.getId(); + AuthorId authorId = g.getCreator().getId(); + AuthorInfo authorInfo; + if (authorInfos.containsKey(authorId)) { + authorInfo = authorInfos.get(authorId); + } else { + authorInfo = contactManager.getAuthorInfo(authorId); + authorInfos.put(authorId, authorInfo); + } GroupCount count = groupManager.getGroupCount(id); boolean dissolved = groupManager.isDissolved(id); - items.add(new GroupItem(g, count, dissolved)); + items.add( + new GroupItem(g, authorInfo, count, dissolved)); } catch (NoSuchGroupException e) { // Continue } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupViewHolder.java b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupViewHolder.java index b64eb25a29ac555c63f1ad4fe27139eec899c218..ce63ad29feef1f9ff95384b1224146bb8c737085 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupViewHolder.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupViewHolder.java @@ -20,6 +20,7 @@ import static android.view.View.GONE; import static android.view.View.VISIBLE; import static org.briarproject.briar.android.activity.BriarActivity.GROUP_ID; import static org.briarproject.briar.android.activity.BriarActivity.GROUP_NAME; +import static org.briarproject.briar.android.util.UiUtils.getContactDisplayName; @MethodsNotNullByDefault @ParametersNotNullByDefault @@ -60,8 +61,9 @@ class GroupViewHolder extends RecyclerView.ViewHolder { name.setText(group.getName()); // Creator - creator.setText(ctx.getString(R.string.groups_created_by, - group.getCreator().getName())); + String creatorName = getContactDisplayName(group.getCreator(), + group.getCreatorInfo().getAlias()); + creator.setText(ctx.getString(R.string.groups_created_by, creatorName)); if (!group.isDissolved()) { // full visibility