mirror of
https://github.com/oxen-io/session-android.git
synced 2025-06-26 21:38:30 +00:00
Hide admin options on bottom sheet for members not currently in group.
This commit is contained in:
parent
8dcda73072
commit
222ba6ee53
@ -208,6 +208,10 @@ public final class LiveGroup {
|
||||
return Transformations.map(getFullMembers(), fullMembers -> getMembershipDescription(resources, 0, fullMembers.size()));
|
||||
}
|
||||
|
||||
public LiveData<GroupDatabase.MemberLevel> getMemberLevel(@NonNull Recipient recipient) {
|
||||
return Transformations.map(groupRecord, g -> g.memberLevel(recipient));
|
||||
}
|
||||
|
||||
private static String getMembershipDescription(@NonNull Resources resources, int invitedCount, int fullMemberCount) {
|
||||
return invitedCount > 0 ? resources.getQuantityString(R.plurals.MessageRequestProfileView_members_and_invited, fullMemberCount,
|
||||
fullMemberCount, invitedCount)
|
||||
|
@ -11,12 +11,14 @@ import androidx.appcompat.app.AlertDialog;
|
||||
import androidx.fragment.app.FragmentActivity;
|
||||
import androidx.lifecycle.LiveData;
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
import androidx.lifecycle.Transformations;
|
||||
import androidx.lifecycle.ViewModel;
|
||||
import androidx.lifecycle.ViewModelProvider;
|
||||
|
||||
import org.thoughtcrime.securesms.BlockUnblockDialog;
|
||||
import org.thoughtcrime.securesms.R;
|
||||
import org.thoughtcrime.securesms.VerifyIdentityActivity;
|
||||
import org.thoughtcrime.securesms.database.GroupDatabase;
|
||||
import org.thoughtcrime.securesms.database.IdentityDatabase;
|
||||
import org.thoughtcrime.securesms.groups.GroupId;
|
||||
import org.thoughtcrime.securesms.groups.LiveGroup;
|
||||
@ -53,23 +55,27 @@ final class RecipientDialogViewModel extends ViewModel {
|
||||
|
||||
boolean recipientIsSelf = recipientDialogRepository.getRecipientId().equals(Recipient.self().getId());
|
||||
|
||||
recipient = Recipient.live(recipientDialogRepository.getRecipientId()).getLiveData();
|
||||
|
||||
if (recipientDialogRepository.getGroupId() != null && recipientDialogRepository.getGroupId().isV2() && !recipientIsSelf) {
|
||||
LiveGroup source = new LiveGroup(recipientDialogRepository.getGroupId());
|
||||
|
||||
LiveData<Boolean> localIsAdmin = source.isSelfAdmin();
|
||||
LiveData<Boolean> recipientIsAdmin = source.getRecipientIsAdmin(recipientDialogRepository.getRecipientId());
|
||||
LiveData<Boolean> localIsAdmin = source.isSelfAdmin();
|
||||
LiveData<GroupDatabase.MemberLevel> recipientMemberLevel = Transformations.switchMap(recipient, source::getMemberLevel);
|
||||
|
||||
adminActionStatus = LiveDataUtil.combineLatest(localIsAdmin, recipientIsAdmin,
|
||||
(localAdmin, recipientAdmin) ->
|
||||
new AdminActionStatus(localAdmin,
|
||||
localAdmin && !recipientAdmin,
|
||||
localAdmin && recipientAdmin));
|
||||
adminActionStatus = LiveDataUtil.combineLatest(localIsAdmin, recipientMemberLevel,
|
||||
(localAdmin, memberLevel) -> {
|
||||
boolean inGroup = memberLevel.isInGroup();
|
||||
boolean recipientAdmin = memberLevel == GroupDatabase.MemberLevel.ADMINISTRATOR;
|
||||
|
||||
return new AdminActionStatus(inGroup && localAdmin,
|
||||
inGroup && localAdmin && !recipientAdmin,
|
||||
inGroup && localAdmin && recipientAdmin);
|
||||
});
|
||||
} else {
|
||||
adminActionStatus = new MutableLiveData<>(new AdminActionStatus(false, false, false));
|
||||
}
|
||||
|
||||
recipient = Recipient.live(recipientDialogRepository.getRecipientId()).getLiveData();
|
||||
|
||||
boolean isSelf = recipientDialogRepository.getRecipientId().equals(Recipient.self().getId());
|
||||
if (!isSelf) {
|
||||
recipientDialogRepository.getIdentity(identity::postValue);
|
||||
|
Loading…
x
Reference in New Issue
Block a user