kopia lustrzana https://github.com/ryukoposting/Signal-Android
Show block request if request follows a collapsed event.
rodzic
77caedb3bb
commit
77ef877c59
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
Ładowanie…
Reference in New Issue