Skip to content

Commit

Permalink
Allow future display of pending member count.
Browse files Browse the repository at this point in the history
  • Loading branch information
alan-signal authored and greyson-signal committed Mar 26, 2020
1 parent 1068c3c commit 033bf77
Show file tree
Hide file tree
Showing 5 changed files with 61 additions and 24 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -336,10 +336,11 @@ private static void presentMessageRequestProfileView(@NonNull Context context, @
return;
}

Recipient recipient = recipientInfo.getRecipient();
boolean isSelf = Recipient.self().equals(recipient);
int memberCount = recipientInfo.getGroupMemberCount();
List<String> groups = recipientInfo.getSharedGroups();
Recipient recipient = recipientInfo.getRecipient();
boolean isSelf = Recipient.self().equals(recipient);
int memberCount = recipientInfo.getGroupMemberCount();
int pendingMemberCount = recipientInfo.getGroupPendingMemberCount();
List<String> groups = recipientInfo.getSharedGroups();

if (recipient != null) {
conversationBanner.setAvatar(GlideApp.with(context), recipient);
Expand All @@ -348,7 +349,14 @@ private static void presentMessageRequestProfileView(@NonNull Context context, @
conversationBanner.setTitle(title);

if (recipient.isGroup()) {
conversationBanner.setSubtitle(context.getResources().getQuantityString(R.plurals.MessageRequestProfileView_members, memberCount, memberCount));
if (pendingMemberCount > 0) {
conversationBanner.setSubtitle(context.getResources()
.getQuantityString(R.plurals.MessageRequestProfileView_members_and_invited, memberCount,
memberCount, pendingMemberCount));
} else {
conversationBanner.setSubtitle(context.getResources().getQuantityString(R.plurals.MessageRequestProfileView_members, memberCount,
memberCount));
}
} else if (isSelf) {
conversationBanner.setSubtitle(context.getString(R.string.ConversationFragment__you_can_add_notes_for_yourself_in_this_conversation));
} else {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package org.thoughtcrime.securesms.messagerequests;

final class GroupMemberCount {
static final GroupMemberCount ZERO = new GroupMemberCount(0, 0);

private final int fullMemberCount;
private final int pendingMemberCount;

GroupMemberCount(int fullMemberCount, int pendingMemberCount) {
this.fullMemberCount = fullMemberCount;
this.pendingMemberCount = pendingMemberCount;
}

int getFullMemberCount() {
return fullMemberCount;
}

int getPendingMemberCount() {
return pendingMemberCount;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
import java.util.List;
import java.util.concurrent.Executor;

public class MessageRequestRepository {
final class MessageRequestRepository {

private final Context context;
private final Executor executor;
Expand All @@ -42,11 +42,13 @@ void getGroups(@NonNull RecipientId recipientId, @NonNull Consumer<List<String>>
});
}

void getMemberCount(@NonNull RecipientId recipientId, @NonNull Consumer<Integer> onMemberCountLoaded) {
void getMemberCount(@NonNull RecipientId recipientId, @NonNull Consumer<GroupMemberCount> onMemberCountLoaded) {
executor.execute(() -> {
GroupDatabase groupDatabase = DatabaseFactory.getGroupDatabase(context);
Optional<GroupDatabase.GroupRecord> groupRecord = groupDatabase.getGroup(recipientId);
onMemberCountLoaded.accept(groupRecord.transform(record -> record.getMembers().size()).or(0));
onMemberCountLoaded.accept(groupRecord.transform(record -> {
return new GroupMemberCount(record.getMembers().size(), 0);
}).or(GroupMemberCount.ZERO));
});
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,13 +25,13 @@

public class MessageRequestViewModel extends ViewModel {

private final SingleLiveEvent<Status> status = new SingleLiveEvent<>();
private final MutableLiveData<Recipient> recipient = new MutableLiveData<>();
private final MutableLiveData<List<String>> groups = new MutableLiveData<>(Collections.emptyList());
private final MutableLiveData<Integer> memberCount = new MutableLiveData<>(0);
private final MutableLiveData<DisplayState> displayState = new MutableLiveData<>();
private final LiveData<RecipientInfo> recipientInfo = Transformations.map(new LiveDataTriple<>(recipient, memberCount, groups),
triple -> new RecipientInfo(triple.first(), triple.second(), triple.third()));
private final SingleLiveEvent<Status> status = new SingleLiveEvent<>();
private final MutableLiveData<Recipient> recipient = new MutableLiveData<>();
private final MutableLiveData<List<String>> groups = new MutableLiveData<>(Collections.emptyList());
private final MutableLiveData<GroupMemberCount> memberCount = new MutableLiveData<>(GroupMemberCount.ZERO);
private final MutableLiveData<DisplayState> displayState = new MutableLiveData<>();
private final LiveData<RecipientInfo> recipientInfo = Transformations.map(new LiveDataTriple<>(recipient, memberCount, groups),
triple -> new RecipientInfo(triple.first(), triple.second(), triple.third()));

private final MessageRequestRepository repository;

Expand Down Expand Up @@ -133,9 +133,7 @@ private void loadGroups() {
}

private void loadMemberCount() {
repository.getMemberCount(liveRecipient.getId(), memberCount -> {
this.memberCount.postValue(memberCount == null ? 0 : memberCount);
});
repository.getMemberCount(liveRecipient.getId(), memberCount::postValue);
}

@SuppressWarnings("ConstantConditions")
Expand All @@ -161,13 +159,13 @@ private void loadMessageRequestAccepted(@NonNull Recipient recipient) {
}

public static class RecipientInfo {
private final @Nullable Recipient recipient;
private final int groupMemberCount;
private final @NonNull List<String> sharedGroups;
@Nullable private final Recipient recipient;
@NonNull private final GroupMemberCount groupMemberCount;
@NonNull private final List<String> sharedGroups;

private RecipientInfo(@Nullable Recipient recipient, @Nullable Integer groupMemberCount, @Nullable List<String> sharedGroups) {
private RecipientInfo(@Nullable Recipient recipient, @Nullable GroupMemberCount groupMemberCount, @Nullable List<String> sharedGroups) {
this.recipient = recipient;
this.groupMemberCount = groupMemberCount == null ? 0 : groupMemberCount;
this.groupMemberCount = groupMemberCount == null ? GroupMemberCount.ZERO : groupMemberCount;
this.sharedGroups = sharedGroups == null ? Collections.emptyList() : sharedGroups;
}

Expand All @@ -177,7 +175,11 @@ public Recipient getRecipient() {
}

public int getGroupMemberCount() {
return groupMemberCount;
return groupMemberCount.getFullMemberCount();
}

public int getGroupPendingMemberCount() {
return groupMemberCount.getPendingMemberCount();
}

@NonNull
Expand Down
4 changes: 4 additions & 0 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -656,6 +656,10 @@
<item quantity="one">%1$d member</item>
<item quantity="other">%1$d members</item>
</plurals>
<plurals name="MessageRequestProfileView_members_and_invited">
<item quantity="one">%1$d member (+%2$d invited)</item>
<item quantity="other">%1$d members (+%2$d invited)</item>
</plurals>
<plurals name="MessageRequestProfileView_member_of_others">
<item quantity="one">%d other</item>
<item quantity="other">%d others</item>
Expand Down

0 comments on commit 033bf77

Please sign in to comment.