Show block request if request follows a collapsed event.

fork-5.53.8
Cody Henthorne 2022-03-18 15:26:38 -04:00 zatwierdzone przez GitHub
rodzic 77caedb3bb
commit 77ef877c59
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 4AEE18F83AFDEB23
2 zmienionych plików z 32 dodań i 7 usunięć

Wyświetl plik

@ -77,6 +77,7 @@ public final class ConversationUpdateItem extends FrameLayout
private View background;
private ConversationMessage conversationMessage;
private Recipient conversationRecipient;
private Optional<MessageRecord> previousMessageRecord;
private Optional<MessageRecord> nextMessageRecord;
private MessageRecord messageRecord;
private boolean isMessageRequestAccepted;
@ -150,13 +151,15 @@ public final class ConversationUpdateItem extends FrameLayout
{
this.conversationMessage = conversationMessage;
this.messageRecord = conversationMessage.getMessageRecord();
this.previousMessageRecord = previousMessageRecord;
this.nextMessageRecord = nextMessageRecord;
this.conversationRecipient = conversationRecipient;
this.isMessageRequestAccepted = isMessageRequestAccepted;
senderObserver.observe(lifecycleOwner, messageRecord.getIndividualRecipient());
if (conversationRecipient.isActiveGroup() && (conversationMessage.getMessageRecord().isGroupCall() || conversationMessage.getMessageRecord().isCollapsedGroupV2JoinUpdate())) {
if (conversationRecipient.isActiveGroup() &&
(messageRecord.isGroupCall() || messageRecord.isCollapsedGroupV2JoinUpdate() || messageRecord.isGroupV2JoinRequest(messageRecord.getIndividualRecipient().getServiceId().orElse(null)))) {
groupObserver.observe(lifecycleOwner, conversationRecipient);
groupData.observe(lifecycleOwner, conversationRecipient);
} else {
@ -509,10 +512,7 @@ public final class ConversationUpdateItem extends FrameLayout
eventListener.onChangeNumberUpdateContact(conversationMessage.getMessageRecord().getIndividualRecipient());
}
});
} else if (conversationMessage.getMessageRecord().isCollapsedGroupV2JoinUpdate() &&
groupData.isSelfAdmin() &&
!groupData.isBanned(conversationMessage.getMessageRecord().getIndividualRecipient()) &&
!groupData.isFullMember(conversationMessage.getMessageRecord().getIndividualRecipient())) {
} else if (shouldShowBlockRequestAction(conversationMessage.getMessageRecord())) {
actionButton.setText(R.string.ConversationUpdateItem_block_request);
actionButton.setVisibility(VISIBLE);
actionButton.setOnClickListener(v -> {
@ -554,6 +554,17 @@ public final class ConversationUpdateItem extends FrameLayout
}
}
private boolean shouldShowBlockRequestAction(MessageRecord messageRecord) {
Recipient toBlock = messageRecord.getIndividualRecipient();
if (!toBlock.hasServiceId() || !groupData.isSelfAdmin() || groupData.isBanned(toBlock) || groupData.isFullMember(toBlock)) {
return false;
}
return (messageRecord.isCollapsedGroupV2JoinUpdate() && !nextMessageRecord.map(m -> m.isGroupV2JoinRequest(toBlock.requireServiceId())).orElse(false)) ||
(messageRecord.isGroupV2JoinRequest(toBlock.requireServiceId()) && previousMessageRecord.map(m -> m.isCollapsedGroupV2JoinUpdate(toBlock.requireServiceId())).orElse(false));
}
private void presentBackground(boolean collapseAbove, boolean collapseBelow, boolean hasWallpaper) {
int marginDefault = getContext().getResources().getDimensionPixelOffset(R.dimen.conversation_update_vertical_margin);
int marginCollapsed = 0;

Wyświetl plik

@ -412,7 +412,15 @@ public abstract class MessageRecord extends DisplayRecord {
return "";
}
public boolean isGroupV2JoinRequest(ByteString uuid) {
public boolean isGroupV2JoinRequest(@Nullable ServiceId serviceId) {
if (serviceId == null) {
return false;
}
return isGroupV2JoinRequest(UuidUtil.toByteString(serviceId.uuid()));
}
public boolean isGroupV2JoinRequest(@NonNull ByteString uuid) {
DecryptedGroupV2Context decryptedGroupV2Context = getDecryptedGroupV2Context();
if (decryptedGroupV2Context != null && decryptedGroupV2Context.hasChange()) {
DecryptedGroupChange change = decryptedGroupV2Context.getChange();
@ -422,10 +430,16 @@ public abstract class MessageRecord extends DisplayRecord {
}
public boolean isCollapsedGroupV2JoinUpdate() {
return isCollapsedGroupV2JoinUpdate(null);
}
public boolean isCollapsedGroupV2JoinUpdate(@Nullable ServiceId serviceId) {
DecryptedGroupV2Context decryptedGroupV2Context = getDecryptedGroupV2Context();
if (decryptedGroupV2Context != null && decryptedGroupV2Context.hasChange()) {
DecryptedGroupChange change = decryptedGroupV2Context.getChange();
return change.getNewRequestingMembersCount() > 0 && change.getDeleteRequestingMembersCount() > 0;
return change.getNewRequestingMembersCount() > 0 &&
change.getDeleteRequestingMembersCount() > 0 &&
(serviceId == null || change.getEditor().equals(UuidUtil.toByteString(serviceId.uuid())));
}
return false;
}