mirror of
https://github.com/oxen-io/session-android.git
synced 2025-06-09 07:08:33 +00:00
Allow future display of pending member count.
This commit is contained in:
parent
1068c3ca7e
commit
033bf77cbb
@ -339,6 +339,7 @@ public class ConversationFragment extends Fragment
|
|||||||
Recipient recipient = recipientInfo.getRecipient();
|
Recipient recipient = recipientInfo.getRecipient();
|
||||||
boolean isSelf = Recipient.self().equals(recipient);
|
boolean isSelf = Recipient.self().equals(recipient);
|
||||||
int memberCount = recipientInfo.getGroupMemberCount();
|
int memberCount = recipientInfo.getGroupMemberCount();
|
||||||
|
int pendingMemberCount = recipientInfo.getGroupPendingMemberCount();
|
||||||
List<String> groups = recipientInfo.getSharedGroups();
|
List<String> groups = recipientInfo.getSharedGroups();
|
||||||
|
|
||||||
if (recipient != null) {
|
if (recipient != null) {
|
||||||
@ -348,7 +349,14 @@ public class ConversationFragment extends Fragment
|
|||||||
conversationBanner.setTitle(title);
|
conversationBanner.setTitle(title);
|
||||||
|
|
||||||
if (recipient.isGroup()) {
|
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) {
|
} else if (isSelf) {
|
||||||
conversationBanner.setSubtitle(context.getString(R.string.ConversationFragment__you_can_add_notes_for_yourself_in_this_conversation));
|
conversationBanner.setSubtitle(context.getString(R.string.ConversationFragment__you_can_add_notes_for_yourself_in_this_conversation));
|
||||||
} else {
|
} else {
|
||||||
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
@ -25,7 +25,7 @@ import org.whispersystems.libsignal.util.guava.Optional;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.concurrent.Executor;
|
import java.util.concurrent.Executor;
|
||||||
|
|
||||||
public class MessageRequestRepository {
|
final class MessageRequestRepository {
|
||||||
|
|
||||||
private final Context context;
|
private final Context context;
|
||||||
private final Executor executor;
|
private final Executor executor;
|
||||||
@ -42,11 +42,13 @@ public class MessageRequestRepository {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
void getMemberCount(@NonNull RecipientId recipientId, @NonNull Consumer<Integer> onMemberCountLoaded) {
|
void getMemberCount(@NonNull RecipientId recipientId, @NonNull Consumer<GroupMemberCount> onMemberCountLoaded) {
|
||||||
executor.execute(() -> {
|
executor.execute(() -> {
|
||||||
GroupDatabase groupDatabase = DatabaseFactory.getGroupDatabase(context);
|
GroupDatabase groupDatabase = DatabaseFactory.getGroupDatabase(context);
|
||||||
Optional<GroupDatabase.GroupRecord> groupRecord = groupDatabase.getGroup(recipientId);
|
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));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -28,7 +28,7 @@ public class MessageRequestViewModel extends ViewModel {
|
|||||||
private final SingleLiveEvent<Status> status = new SingleLiveEvent<>();
|
private final SingleLiveEvent<Status> status = new SingleLiveEvent<>();
|
||||||
private final MutableLiveData<Recipient> recipient = new MutableLiveData<>();
|
private final MutableLiveData<Recipient> recipient = new MutableLiveData<>();
|
||||||
private final MutableLiveData<List<String>> groups = new MutableLiveData<>(Collections.emptyList());
|
private final MutableLiveData<List<String>> groups = new MutableLiveData<>(Collections.emptyList());
|
||||||
private final MutableLiveData<Integer> memberCount = new MutableLiveData<>(0);
|
private final MutableLiveData<GroupMemberCount> memberCount = new MutableLiveData<>(GroupMemberCount.ZERO);
|
||||||
private final MutableLiveData<DisplayState> displayState = new MutableLiveData<>();
|
private final MutableLiveData<DisplayState> displayState = new MutableLiveData<>();
|
||||||
private final LiveData<RecipientInfo> recipientInfo = Transformations.map(new LiveDataTriple<>(recipient, memberCount, groups),
|
private final LiveData<RecipientInfo> recipientInfo = Transformations.map(new LiveDataTriple<>(recipient, memberCount, groups),
|
||||||
triple -> new RecipientInfo(triple.first(), triple.second(), triple.third()));
|
triple -> new RecipientInfo(triple.first(), triple.second(), triple.third()));
|
||||||
@ -133,9 +133,7 @@ public class MessageRequestViewModel extends ViewModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void loadMemberCount() {
|
private void loadMemberCount() {
|
||||||
repository.getMemberCount(liveRecipient.getId(), memberCount -> {
|
repository.getMemberCount(liveRecipient.getId(), memberCount::postValue);
|
||||||
this.memberCount.postValue(memberCount == null ? 0 : memberCount);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("ConstantConditions")
|
@SuppressWarnings("ConstantConditions")
|
||||||
@ -161,13 +159,13 @@ public class MessageRequestViewModel extends ViewModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static class RecipientInfo {
|
public static class RecipientInfo {
|
||||||
private final @Nullable Recipient recipient;
|
@Nullable private final Recipient recipient;
|
||||||
private final int groupMemberCount;
|
@NonNull private final GroupMemberCount groupMemberCount;
|
||||||
private final @NonNull List<String> sharedGroups;
|
@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.recipient = recipient;
|
||||||
this.groupMemberCount = groupMemberCount == null ? 0 : groupMemberCount;
|
this.groupMemberCount = groupMemberCount == null ? GroupMemberCount.ZERO : groupMemberCount;
|
||||||
this.sharedGroups = sharedGroups == null ? Collections.emptyList() : sharedGroups;
|
this.sharedGroups = sharedGroups == null ? Collections.emptyList() : sharedGroups;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -177,7 +175,11 @@ public class MessageRequestViewModel extends ViewModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public int getGroupMemberCount() {
|
public int getGroupMemberCount() {
|
||||||
return groupMemberCount;
|
return groupMemberCount.getFullMemberCount();
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getGroupPendingMemberCount() {
|
||||||
|
return groupMemberCount.getPendingMemberCount();
|
||||||
}
|
}
|
||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
|
@ -656,6 +656,10 @@
|
|||||||
<item quantity="one">%1$d member</item>
|
<item quantity="one">%1$d member</item>
|
||||||
<item quantity="other">%1$d members</item>
|
<item quantity="other">%1$d members</item>
|
||||||
</plurals>
|
</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">
|
<plurals name="MessageRequestProfileView_member_of_others">
|
||||||
<item quantity="one">%d other</item>
|
<item quantity="one">%d other</item>
|
||||||
<item quantity="other">%d others</item>
|
<item quantity="other">%d others</item>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user