mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-18 13:49:53 +01:00
Merge branch '813-add-online-status-and-creator-information-to-group-memberlist' into 'master'
Add creator and online information to group member list   Closes #813 See merge request !448
This commit is contained in:
@@ -12,6 +12,7 @@ import android.support.v7.widget.LinearLayoutManager;
|
|||||||
import android.view.Menu;
|
import android.view.Menu;
|
||||||
import android.view.MenuInflater;
|
import android.view.MenuInflater;
|
||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
|
import android.view.View;
|
||||||
|
|
||||||
import org.briarproject.bramble.api.db.DbException;
|
import org.briarproject.bramble.api.db.DbException;
|
||||||
import org.briarproject.bramble.api.identity.AuthorId;
|
import org.briarproject.bramble.api.identity.AuthorId;
|
||||||
@@ -72,6 +73,21 @@ public class GroupActivity extends
|
|||||||
if (groupName != null) setTitle(groupName);
|
if (groupName != null) setTitle(groupName);
|
||||||
loadNamedGroup();
|
loadNamedGroup();
|
||||||
|
|
||||||
|
// Open member list on ActionBar click
|
||||||
|
View actionBar = findViewById(R.id.action_bar);
|
||||||
|
if (actionBar != null) {
|
||||||
|
actionBar.setOnClickListener(
|
||||||
|
new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
Intent i = new Intent(GroupActivity.this,
|
||||||
|
GroupMemberListActivity.class);
|
||||||
|
i.putExtra(GROUP_ID, groupId.getBytes());
|
||||||
|
startActivity(i);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
setGroupEnabled(false);
|
setGroupEnabled(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,10 @@
|
|||||||
package org.briarproject.briar.android.privategroup.memberlist;
|
package org.briarproject.briar.android.privategroup.memberlist;
|
||||||
|
|
||||||
|
import org.briarproject.bramble.api.contact.ContactId;
|
||||||
import org.briarproject.bramble.api.db.DatabaseExecutor;
|
import org.briarproject.bramble.api.db.DatabaseExecutor;
|
||||||
import org.briarproject.bramble.api.db.DbException;
|
import org.briarproject.bramble.api.db.DbException;
|
||||||
import org.briarproject.bramble.api.lifecycle.LifecycleManager;
|
import org.briarproject.bramble.api.lifecycle.LifecycleManager;
|
||||||
|
import org.briarproject.bramble.api.plugin.ConnectionRegistry;
|
||||||
import org.briarproject.bramble.api.sync.GroupId;
|
import org.briarproject.bramble.api.sync.GroupId;
|
||||||
import org.briarproject.briar.android.controller.DbControllerImpl;
|
import org.briarproject.briar.android.controller.DbControllerImpl;
|
||||||
import org.briarproject.briar.android.controller.handler.ResultExceptionHandler;
|
import org.briarproject.briar.android.controller.handler.ResultExceptionHandler;
|
||||||
@@ -24,13 +26,16 @@ class GroupMemberListControllerImpl extends DbControllerImpl
|
|||||||
private static final Logger LOG =
|
private static final Logger LOG =
|
||||||
Logger.getLogger(GroupMemberListControllerImpl.class.getName());
|
Logger.getLogger(GroupMemberListControllerImpl.class.getName());
|
||||||
|
|
||||||
|
private final ConnectionRegistry connectionRegistry;
|
||||||
private final PrivateGroupManager privateGroupManager;
|
private final PrivateGroupManager privateGroupManager;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
GroupMemberListControllerImpl(@DatabaseExecutor Executor dbExecutor,
|
GroupMemberListControllerImpl(@DatabaseExecutor Executor dbExecutor,
|
||||||
LifecycleManager lifecycleManager,
|
LifecycleManager lifecycleManager,
|
||||||
|
ConnectionRegistry connectionRegistry,
|
||||||
PrivateGroupManager privateGroupManager) {
|
PrivateGroupManager privateGroupManager) {
|
||||||
super(dbExecutor, lifecycleManager);
|
super(dbExecutor, lifecycleManager);
|
||||||
|
this.connectionRegistry = connectionRegistry;
|
||||||
this.privateGroupManager = privateGroupManager;
|
this.privateGroupManager = privateGroupManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -45,7 +50,11 @@ class GroupMemberListControllerImpl extends DbControllerImpl
|
|||||||
Collection<GroupMember> members =
|
Collection<GroupMember> members =
|
||||||
privateGroupManager.getMembers(groupId);
|
privateGroupManager.getMembers(groupId);
|
||||||
for (GroupMember m : members) {
|
for (GroupMember m : members) {
|
||||||
items.add(new MemberListItem(m));
|
ContactId c = m.getContactId();
|
||||||
|
boolean online = false;
|
||||||
|
if (c != null)
|
||||||
|
online = connectionRegistry.isConnected(c);
|
||||||
|
items.add(new MemberListItem(m, online));
|
||||||
}
|
}
|
||||||
handler.onResult(items);
|
handler.onResult(items);
|
||||||
} catch (DbException e) {
|
} catch (DbException e) {
|
||||||
|
|||||||
@@ -35,7 +35,9 @@ class MemberListAdapter extends
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean areContentsTheSame(MemberListItem m1, MemberListItem m2) {
|
public boolean areContentsTheSame(MemberListItem m1, MemberListItem m2) {
|
||||||
|
if (m1.isOnline() != m2.isOnline()) return false;
|
||||||
if (m1.getVisibility() != m2.getVisibility()) return false;
|
if (m1.getVisibility() != m2.getVisibility()) return false;
|
||||||
|
if (m1.getContactId() != m2.getContactId()) return false;
|
||||||
if (m1.getStatus() != m2.getStatus()) return false;
|
if (m1.getStatus() != m2.getStatus()) return false;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,37 +1,55 @@
|
|||||||
package org.briarproject.briar.android.privategroup.memberlist;
|
package org.briarproject.briar.android.privategroup.memberlist;
|
||||||
|
|
||||||
|
import android.support.annotation.Nullable;
|
||||||
|
|
||||||
|
import org.briarproject.bramble.api.contact.ContactId;
|
||||||
import org.briarproject.bramble.api.identity.Author;
|
import org.briarproject.bramble.api.identity.Author;
|
||||||
import org.briarproject.bramble.api.identity.Author.Status;
|
import org.briarproject.bramble.api.identity.Author.Status;
|
||||||
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
|
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
|
||||||
import org.briarproject.briar.api.privategroup.GroupMember;
|
import org.briarproject.briar.api.privategroup.GroupMember;
|
||||||
import org.briarproject.briar.api.privategroup.Visibility;
|
import org.briarproject.briar.api.privategroup.Visibility;
|
||||||
|
|
||||||
import javax.annotation.concurrent.Immutable;
|
import javax.annotation.concurrent.NotThreadSafe;
|
||||||
|
|
||||||
@Immutable
|
@NotThreadSafe
|
||||||
@NotNullByDefault
|
@NotNullByDefault
|
||||||
class MemberListItem {
|
class MemberListItem {
|
||||||
|
|
||||||
private final Author member;
|
private final GroupMember groupMember;
|
||||||
private final Status status;
|
private boolean online;
|
||||||
private final Visibility visibility;
|
|
||||||
|
|
||||||
MemberListItem(GroupMember groupMember) {
|
MemberListItem(GroupMember groupMember, boolean online) {
|
||||||
this.member = groupMember.getAuthor();
|
this.groupMember = groupMember;
|
||||||
this.visibility = groupMember.getVisibility();
|
this.online = online;
|
||||||
this.status = groupMember.getStatus();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Author getMember() {
|
Author getMember() {
|
||||||
return member;
|
return groupMember.getAuthor();
|
||||||
}
|
|
||||||
|
|
||||||
Visibility getVisibility() {
|
|
||||||
return visibility;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Status getStatus() {
|
Status getStatus() {
|
||||||
return status;
|
return groupMember.getStatus();
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean isCreator() {
|
||||||
|
return groupMember.isCreator();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
ContactId getContactId() {
|
||||||
|
return groupMember.getContactId();
|
||||||
|
}
|
||||||
|
|
||||||
|
Visibility getVisibility() {
|
||||||
|
return groupMember.getVisibility();
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean isOnline() {
|
||||||
|
return online;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setOnline(boolean online) {
|
||||||
|
this.online = online;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,19 +20,52 @@ import static org.briarproject.briar.android.privategroup.VisibilityHelper.getVi
|
|||||||
class MemberListItemHolder extends RecyclerView.ViewHolder {
|
class MemberListItemHolder extends RecyclerView.ViewHolder {
|
||||||
|
|
||||||
private final AuthorView author;
|
private final AuthorView author;
|
||||||
|
private final ImageView bulb;
|
||||||
|
private final TextView creator;
|
||||||
private final ImageView icon;
|
private final ImageView icon;
|
||||||
private final TextView info;
|
private final TextView info;
|
||||||
|
|
||||||
MemberListItemHolder(View v) {
|
MemberListItemHolder(View v) {
|
||||||
super(v);
|
super(v);
|
||||||
author = (AuthorView) v.findViewById(R.id.authorView);
|
author = (AuthorView) v.findViewById(R.id.authorView);
|
||||||
|
bulb = (ImageView) v.findViewById(R.id.bulbView);
|
||||||
|
creator = (TextView) v.findViewById(R.id.creatorView);
|
||||||
icon = (ImageView) v.findViewById(R.id.icon);
|
icon = (ImageView) v.findViewById(R.id.icon);
|
||||||
info = (TextView) v.findViewById(R.id.info);
|
info = (TextView) v.findViewById(R.id.info);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void bind(MemberListItem item) {
|
protected void bind(MemberListItem item) {
|
||||||
|
// member name, avatar and status
|
||||||
author.setAuthor(item.getMember());
|
author.setAuthor(item.getMember());
|
||||||
author.setAuthorStatus(item.getStatus());
|
author.setAuthorStatus(item.getStatus());
|
||||||
|
|
||||||
|
// online status of visible contacts
|
||||||
|
if (item.getContactId() != null) {
|
||||||
|
bulb.setVisibility(View.VISIBLE);
|
||||||
|
if (item.isOnline()) {
|
||||||
|
bulb.setImageResource(R.drawable.contact_connected);
|
||||||
|
} else {
|
||||||
|
bulb.setImageResource(R.drawable.contact_disconnected);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
bulb.setVisibility(View.GONE);
|
||||||
|
}
|
||||||
|
|
||||||
|
// text shown for creator
|
||||||
|
if (item.isCreator()) {
|
||||||
|
creator.setVisibility(View.VISIBLE);
|
||||||
|
if (item.getStatus() == OURSELVES) {
|
||||||
|
creator.setText(R.string.groups_member_created_you);
|
||||||
|
} else {
|
||||||
|
creator.setText(creator.getContext()
|
||||||
|
.getString(R.string.groups_member_created,
|
||||||
|
item.getMember().getName()));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
creator.setVisibility(View.GONE);
|
||||||
|
}
|
||||||
|
|
||||||
|
// visibility information
|
||||||
if (item.getStatus() == OURSELVES || item.getStatus() == UNKNOWN) {
|
if (item.getStatus() == OURSELVES || item.getStatus() == UNKNOWN) {
|
||||||
icon.setVisibility(View.GONE);
|
icon.setVisibility(View.GONE);
|
||||||
info.setVisibility(View.GONE);
|
info.setVisibility(View.GONE);
|
||||||
|
|||||||
@@ -13,17 +13,41 @@
|
|||||||
android:id="@+id/authorView"
|
android:id="@+id/authorView"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_alignParentLeft="true"
|
||||||
android:layout_alignParentTop="true"
|
android:layout_alignParentTop="true"
|
||||||
android:layout_marginBottom="@dimen/margin_small"
|
android:layout_marginBottom="@dimen/margin_small"
|
||||||
android:layout_marginEnd="@dimen/listitem_horizontal_margin"
|
android:layout_marginEnd="@dimen/listitem_horizontal_margin"
|
||||||
android:layout_marginRight="@dimen/listitem_horizontal_margin"
|
android:layout_marginRight="@dimen/listitem_horizontal_margin"
|
||||||
|
android:layout_toLeftOf="@+id/bulbView"
|
||||||
app:persona="list"/>
|
app:persona="list"/>
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:id="@+id/bulbView"
|
||||||
|
android:layout_width="16dp"
|
||||||
|
android:layout_height="16dp"
|
||||||
|
android:layout_alignBottom="@+id/authorView"
|
||||||
|
android:layout_alignParentEnd="true"
|
||||||
|
android:layout_alignParentRight="true"
|
||||||
|
android:layout_alignTop="@+id/authorView"
|
||||||
|
android:layout_marginRight="@dimen/listitem_horizontal_margin"
|
||||||
|
tools:src="@drawable/contact_connected"/>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/creatorView"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_below="@+id/authorView"
|
||||||
|
android:layout_marginBottom="@dimen/margin_small"
|
||||||
|
android:layout_marginLeft="@dimen/listitem_group_member_indentation"
|
||||||
|
android:text="@string/groups_member_created_you"
|
||||||
|
android:textColor="@color/briar_text_secondary"
|
||||||
|
tools:visibility="visible"/>
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/icon"
|
android:id="@+id/icon"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_below="@+id/authorView"
|
android:layout_below="@+id/creatorView"
|
||||||
android:layout_marginLeft="@dimen/listitem_group_member_indentation"
|
android:layout_marginLeft="@dimen/listitem_group_member_indentation"
|
||||||
android:layout_marginRight="@dimen/margin_small"
|
android:layout_marginRight="@dimen/margin_small"
|
||||||
android:contentDescription="@string/forum_invitation_already_sharing"
|
android:contentDescription="@string/forum_invitation_already_sharing"
|
||||||
@@ -33,7 +57,7 @@
|
|||||||
android:id="@+id/info"
|
android:id="@+id/info"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_below="@+id/authorView"
|
android:layout_below="@+id/creatorView"
|
||||||
android:layout_marginEnd="@dimen/listitem_horizontal_margin"
|
android:layout_marginEnd="@dimen/listitem_horizontal_margin"
|
||||||
android:layout_marginRight="@dimen/listitem_horizontal_margin"
|
android:layout_marginRight="@dimen/listitem_horizontal_margin"
|
||||||
android:layout_toRightOf="@+id/icon"
|
android:layout_toRightOf="@+id/icon"
|
||||||
|
|||||||
@@ -1,9 +1,11 @@
|
|||||||
package org.briarproject.briar.api.privategroup;
|
package org.briarproject.briar.api.privategroup;
|
||||||
|
|
||||||
|
import org.briarproject.bramble.api.contact.ContactId;
|
||||||
import org.briarproject.bramble.api.identity.Author;
|
import org.briarproject.bramble.api.identity.Author;
|
||||||
import org.briarproject.bramble.api.identity.Author.Status;
|
import org.briarproject.bramble.api.identity.Author.Status;
|
||||||
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
|
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
|
||||||
|
|
||||||
|
import javax.annotation.Nullable;
|
||||||
import javax.annotation.concurrent.Immutable;
|
import javax.annotation.concurrent.Immutable;
|
||||||
|
|
||||||
@Immutable
|
@Immutable
|
||||||
@@ -12,11 +14,17 @@ public class GroupMember {
|
|||||||
|
|
||||||
private final Author author;
|
private final Author author;
|
||||||
private final Status status;
|
private final Status status;
|
||||||
|
private final boolean isCreator;
|
||||||
|
@Nullable
|
||||||
|
private final ContactId contactId;
|
||||||
private final Visibility visibility;
|
private final Visibility visibility;
|
||||||
|
|
||||||
public GroupMember(Author author, Status status, Visibility visibility) {
|
public GroupMember(Author author, Status status, boolean isCreator,
|
||||||
|
@Nullable ContactId contactId, Visibility visibility) {
|
||||||
this.author = author;
|
this.author = author;
|
||||||
this.status = status;
|
this.status = status;
|
||||||
|
this.isCreator = isCreator;
|
||||||
|
this.contactId = contactId;
|
||||||
this.visibility = visibility;
|
this.visibility = visibility;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -28,6 +36,19 @@ public class GroupMember {
|
|||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isCreator() {
|
||||||
|
return isCreator;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the ContactId of a visible contact
|
||||||
|
* or null if the contact is not visible or the member is no contact.
|
||||||
|
*/
|
||||||
|
@Nullable
|
||||||
|
public ContactId getContactId() {
|
||||||
|
return contactId;
|
||||||
|
}
|
||||||
|
|
||||||
public Visibility getVisibility() {
|
public Visibility getVisibility() {
|
||||||
return visibility;
|
return visibility;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,8 @@ package org.briarproject.briar.privategroup;
|
|||||||
|
|
||||||
import org.briarproject.bramble.api.FormatException;
|
import org.briarproject.bramble.api.FormatException;
|
||||||
import org.briarproject.bramble.api.client.ClientHelper;
|
import org.briarproject.bramble.api.client.ClientHelper;
|
||||||
|
import org.briarproject.bramble.api.contact.ContactId;
|
||||||
|
import org.briarproject.bramble.api.contact.ContactManager;
|
||||||
import org.briarproject.bramble.api.data.BdfDictionary;
|
import org.briarproject.bramble.api.data.BdfDictionary;
|
||||||
import org.briarproject.bramble.api.data.BdfEntry;
|
import org.briarproject.bramble.api.data.BdfEntry;
|
||||||
import org.briarproject.bramble.api.data.BdfList;
|
import org.briarproject.bramble.api.data.BdfList;
|
||||||
@@ -14,6 +16,7 @@ import org.briarproject.bramble.api.identity.Author;
|
|||||||
import org.briarproject.bramble.api.identity.Author.Status;
|
import org.briarproject.bramble.api.identity.Author.Status;
|
||||||
import org.briarproject.bramble.api.identity.AuthorId;
|
import org.briarproject.bramble.api.identity.AuthorId;
|
||||||
import org.briarproject.bramble.api.identity.IdentityManager;
|
import org.briarproject.bramble.api.identity.IdentityManager;
|
||||||
|
import org.briarproject.bramble.api.identity.LocalAuthor;
|
||||||
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
|
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
|
||||||
import org.briarproject.bramble.api.sync.Group;
|
import org.briarproject.bramble.api.sync.Group;
|
||||||
import org.briarproject.bramble.api.sync.GroupId;
|
import org.briarproject.bramble.api.sync.GroupId;
|
||||||
@@ -52,6 +55,8 @@ import javax.annotation.concurrent.ThreadSafe;
|
|||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
|
||||||
import static org.briarproject.bramble.api.identity.Author.Status.OURSELVES;
|
import static org.briarproject.bramble.api.identity.Author.Status.OURSELVES;
|
||||||
|
import static org.briarproject.bramble.api.identity.Author.Status.UNVERIFIED;
|
||||||
|
import static org.briarproject.bramble.api.identity.Author.Status.VERIFIED;
|
||||||
import static org.briarproject.briar.api.privategroup.MessageType.JOIN;
|
import static org.briarproject.briar.api.privategroup.MessageType.JOIN;
|
||||||
import static org.briarproject.briar.api.privategroup.MessageType.POST;
|
import static org.briarproject.briar.api.privategroup.MessageType.POST;
|
||||||
import static org.briarproject.briar.api.privategroup.Visibility.INVISIBLE;
|
import static org.briarproject.briar.api.privategroup.Visibility.INVISIBLE;
|
||||||
@@ -79,6 +84,7 @@ class PrivateGroupManagerImpl extends BdfIncomingMessageHook
|
|||||||
implements PrivateGroupManager {
|
implements PrivateGroupManager {
|
||||||
|
|
||||||
private final PrivateGroupFactory privateGroupFactory;
|
private final PrivateGroupFactory privateGroupFactory;
|
||||||
|
private final ContactManager contactManager;
|
||||||
private final IdentityManager identityManager;
|
private final IdentityManager identityManager;
|
||||||
private final MessageTracker messageTracker;
|
private final MessageTracker messageTracker;
|
||||||
private final List<PrivateGroupHook> hooks;
|
private final List<PrivateGroupHook> hooks;
|
||||||
@@ -87,9 +93,11 @@ class PrivateGroupManagerImpl extends BdfIncomingMessageHook
|
|||||||
PrivateGroupManagerImpl(ClientHelper clientHelper,
|
PrivateGroupManagerImpl(ClientHelper clientHelper,
|
||||||
MetadataParser metadataParser, DatabaseComponent db,
|
MetadataParser metadataParser, DatabaseComponent db,
|
||||||
PrivateGroupFactory privateGroupFactory,
|
PrivateGroupFactory privateGroupFactory,
|
||||||
IdentityManager identityManager, MessageTracker messageTracker) {
|
ContactManager contactManager, IdentityManager identityManager,
|
||||||
|
MessageTracker messageTracker) {
|
||||||
super(db, clientHelper, metadataParser);
|
super(db, clientHelper, metadataParser);
|
||||||
this.privateGroupFactory = privateGroupFactory;
|
this.privateGroupFactory = privateGroupFactory;
|
||||||
|
this.contactManager = contactManager;
|
||||||
this.identityManager = identityManager;
|
this.identityManager = identityManager;
|
||||||
this.messageTracker = messageTracker;
|
this.messageTracker = messageTracker;
|
||||||
hooks = new CopyOnWriteArrayList<PrivateGroupHook>();
|
hooks = new CopyOnWriteArrayList<PrivateGroupHook>();
|
||||||
@@ -394,10 +402,20 @@ class PrivateGroupManagerImpl extends BdfIncomingMessageHook
|
|||||||
try {
|
try {
|
||||||
Collection<GroupMember> members = new ArrayList<GroupMember>();
|
Collection<GroupMember> members = new ArrayList<GroupMember>();
|
||||||
Map<Author, Visibility> authors = getMembers(txn, g);
|
Map<Author, Visibility> authors = getMembers(txn, g);
|
||||||
|
LocalAuthor la = identityManager.getLocalAuthor();
|
||||||
|
PrivateGroup privateGroup = getPrivateGroup(txn, g);
|
||||||
for (Entry<Author, Visibility> m : authors.entrySet()) {
|
for (Entry<Author, Visibility> m : authors.entrySet()) {
|
||||||
Status status = identityManager
|
Author a = m.getKey();
|
||||||
.getAuthorStatus(txn, m.getKey().getId());
|
Status status = identityManager.getAuthorStatus(txn, a.getId());
|
||||||
members.add(new GroupMember(m.getKey(), status, m.getValue()));
|
Visibility v = m.getValue();
|
||||||
|
ContactId c = null;
|
||||||
|
if (v != INVISIBLE &&
|
||||||
|
(status == VERIFIED || status == UNVERIFIED)) {
|
||||||
|
c = contactManager.getContact(txn, a.getId(), la.getId())
|
||||||
|
.getId();
|
||||||
|
}
|
||||||
|
boolean isCreator = privateGroup.getCreator().equals(a);
|
||||||
|
members.add(new GroupMember(a, status, isCreator, c, v));
|
||||||
}
|
}
|
||||||
db.commitTransaction(txn);
|
db.commitTransaction(txn);
|
||||||
return members;
|
return members;
|
||||||
|
|||||||
Reference in New Issue
Block a user