kopia lustrzana https://github.com/ryukoposting/Signal-Android
Allow block of any recipient except MMS groups still.
rodzic
f312757daf
commit
d1f6a924fb
|
@ -352,10 +352,8 @@ public class ManageGroupFragment extends LoggingFragment {
|
||||||
viewModel.getMentionSetting().observe(getViewLifecycleOwner(), value -> mentionsValue.setText(value));
|
viewModel.getMentionSetting().observe(getViewLifecycleOwner(), value -> mentionsValue.setText(value));
|
||||||
|
|
||||||
viewModel.getCanLeaveGroup().observe(getViewLifecycleOwner(), canLeave -> leaveGroup.setVisibility(canLeave ? View.VISIBLE : View.GONE));
|
viewModel.getCanLeaveGroup().observe(getViewLifecycleOwner(), canLeave -> leaveGroup.setVisibility(canLeave ? View.VISIBLE : View.GONE));
|
||||||
viewModel.getCanBlockGroup().observe(getViewLifecycleOwner(), canBlock -> {
|
viewModel.getCanBlockGroup().observe(getViewLifecycleOwner(), canBlock -> blockGroup.setVisibility(canBlock ? View.VISIBLE : View.GONE));
|
||||||
blockGroup.setVisibility(canBlock ? View.VISIBLE : View.GONE);
|
viewModel.getCanUnblockGroup().observe(getViewLifecycleOwner(), canUnblock -> unblockGroup.setVisibility(canUnblock ? View.VISIBLE : View.GONE));
|
||||||
unblockGroup.setVisibility(canBlock ? View.GONE : View.VISIBLE);
|
|
||||||
});
|
|
||||||
|
|
||||||
viewModel.getGroupInfoMessage().observe(getViewLifecycleOwner(), message -> {
|
viewModel.getGroupInfoMessage().observe(getViewLifecycleOwner(), message -> {
|
||||||
switch (message) {
|
switch (message) {
|
||||||
|
|
|
@ -77,6 +77,7 @@ public class ManageGroupViewModel extends ViewModel {
|
||||||
private final DefaultValueLiveData<CollapseState> memberListCollapseState = new DefaultValueLiveData<>(CollapseState.COLLAPSED);
|
private final DefaultValueLiveData<CollapseState> memberListCollapseState = new DefaultValueLiveData<>(CollapseState.COLLAPSED);
|
||||||
private final LiveData<Boolean> canLeaveGroup;
|
private final LiveData<Boolean> canLeaveGroup;
|
||||||
private final LiveData<Boolean> canBlockGroup;
|
private final LiveData<Boolean> canBlockGroup;
|
||||||
|
private final LiveData<Boolean> canUnblockGroup;
|
||||||
private final LiveData<Boolean> showLegacyIndicator;
|
private final LiveData<Boolean> showLegacyIndicator;
|
||||||
private final LiveData<String> mentionSetting;
|
private final LiveData<String> mentionSetting;
|
||||||
private final LiveData<Boolean> groupLinkOn;
|
private final LiveData<Boolean> groupLinkOn;
|
||||||
|
@ -119,7 +120,8 @@ public class ManageGroupViewModel extends ViewModel {
|
||||||
this.hasCustomNotifications = Transformations.map(this.groupRecipient,
|
this.hasCustomNotifications = Transformations.map(this.groupRecipient,
|
||||||
recipient -> recipient.getNotificationChannel() != null || !NotificationChannels.supported());
|
recipient -> recipient.getNotificationChannel() != null || !NotificationChannels.supported());
|
||||||
this.canLeaveGroup = liveGroup.isActive();
|
this.canLeaveGroup = liveGroup.isActive();
|
||||||
this.canBlockGroup = Transformations.map(this.groupRecipient, recipient -> !recipient.isBlocked());
|
this.canBlockGroup = Transformations.map(this.groupRecipient, recipient -> RecipientUtil.isBlockable(recipient) && !recipient.isBlocked());
|
||||||
|
this.canUnblockGroup = Transformations.map(this.groupRecipient, Recipient::isBlocked);
|
||||||
this.mentionSetting = Transformations.distinctUntilChanged(Transformations.map(this.groupRecipient,
|
this.mentionSetting = Transformations.distinctUntilChanged(Transformations.map(this.groupRecipient,
|
||||||
recipient -> MentionUtil.getMentionSettingDisplayValue(context, recipient.getMentionSetting())));
|
recipient -> MentionUtil.getMentionSettingDisplayValue(context, recipient.getMentionSetting())));
|
||||||
this.groupLinkOn = Transformations.map(liveGroup.getGroupLink(), GroupLinkUrlAndStatus::isEnabled);
|
this.groupLinkOn = Transformations.map(liveGroup.getGroupLink(), GroupLinkUrlAndStatus::isEnabled);
|
||||||
|
@ -220,6 +222,10 @@ public class ManageGroupViewModel extends ViewModel {
|
||||||
return canBlockGroup;
|
return canBlockGroup;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
LiveData<Boolean> getCanUnblockGroup() {
|
||||||
|
return canUnblockGroup;
|
||||||
|
}
|
||||||
|
|
||||||
LiveData<Boolean> getCanLeaveGroup() {
|
LiveData<Boolean> getCanLeaveGroup() {
|
||||||
return canLeaveGroup;
|
return canLeaveGroup;
|
||||||
}
|
}
|
||||||
|
|
|
@ -91,6 +91,10 @@ public class MultiDeviceMessageRequestResponseJob extends BaseJob {
|
||||||
SignalServiceMessageSender messageSender = ApplicationDependencies.getSignalServiceMessageSender();
|
SignalServiceMessageSender messageSender = ApplicationDependencies.getSignalServiceMessageSender();
|
||||||
Recipient recipient = Recipient.resolved(threadRecipient);
|
Recipient recipient = Recipient.resolved(threadRecipient);
|
||||||
|
|
||||||
|
if (!recipient.hasServiceIdentifier()) {
|
||||||
|
Log.i(TAG, "Queued for recipient without service identifier");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
MessageRequestResponseMessage response;
|
MessageRequestResponseMessage response;
|
||||||
|
|
||||||
|
|
|
@ -111,7 +111,7 @@ public class RecipientUtil {
|
||||||
|
|
||||||
public static boolean isBlockable(@NonNull Recipient recipient) {
|
public static boolean isBlockable(@NonNull Recipient recipient) {
|
||||||
Recipient resolved = recipient.resolve();
|
Recipient resolved = recipient.resolve();
|
||||||
return resolved.isPushGroup() || resolved.hasServiceIdentifier();
|
return !resolved.isMmsGroup();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<Recipient> getEligibleForSending(@NonNull List<Recipient> recipients) {
|
public static List<Recipient> getEligibleForSending(@NonNull List<Recipient> recipients) {
|
||||||
|
@ -177,7 +177,10 @@ public class RecipientUtil {
|
||||||
DatabaseFactory.getRecipientDatabase(context).setProfileSharing(recipient.getId(), true);
|
DatabaseFactory.getRecipientDatabase(context).setProfileSharing(recipient.getId(), true);
|
||||||
ApplicationDependencies.getJobManager().add(new MultiDeviceBlockedUpdateJob());
|
ApplicationDependencies.getJobManager().add(new MultiDeviceBlockedUpdateJob());
|
||||||
StorageSyncHelper.scheduleSyncForDataChange();
|
StorageSyncHelper.scheduleSyncForDataChange();
|
||||||
ApplicationDependencies.getJobManager().add(MultiDeviceMessageRequestResponseJob.forAccept(recipient.getId()));
|
|
||||||
|
if (recipient.hasServiceIdentifier()) {
|
||||||
|
ApplicationDependencies.getJobManager().add(MultiDeviceMessageRequestResponseJob.forAccept(recipient.getId()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -51,7 +51,6 @@ import org.thoughtcrime.securesms.recipients.RecipientExporter;
|
||||||
import org.thoughtcrime.securesms.recipients.RecipientId;
|
import org.thoughtcrime.securesms.recipients.RecipientId;
|
||||||
import org.thoughtcrime.securesms.recipients.ui.notifications.CustomNotificationsDialogFragment;
|
import org.thoughtcrime.securesms.recipients.ui.notifications.CustomNotificationsDialogFragment;
|
||||||
import org.thoughtcrime.securesms.util.DateUtils;
|
import org.thoughtcrime.securesms.util.DateUtils;
|
||||||
import org.thoughtcrime.securesms.util.FeatureFlags;
|
|
||||||
import org.thoughtcrime.securesms.util.LifecycleCursorWrapper;
|
import org.thoughtcrime.securesms.util.LifecycleCursorWrapper;
|
||||||
import org.thoughtcrime.securesms.util.ServiceUtil;
|
import org.thoughtcrime.securesms.util.ServiceUtil;
|
||||||
import org.thoughtcrime.securesms.util.Util;
|
import org.thoughtcrime.securesms.util.Util;
|
||||||
|
@ -261,10 +260,11 @@ public class ManageRecipientFragment extends LoggingFragment {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
viewModel.getCanBlock().observe(getViewLifecycleOwner(), canBlock -> {
|
viewModel.getCanBlock().observe(getViewLifecycleOwner(),
|
||||||
block.setVisibility(canBlock ? View.VISIBLE : View.GONE);
|
canBlock -> block.setVisibility(canBlock ? View.VISIBLE : View.GONE));
|
||||||
unblock.setVisibility(canBlock ? View.GONE : View.VISIBLE);
|
|
||||||
});
|
viewModel.getCanUnblock().observe(getViewLifecycleOwner(),
|
||||||
|
canUnblock -> unblock.setVisibility(canUnblock ? View.VISIBLE : View.GONE));
|
||||||
|
|
||||||
messageButton.setOnClickListener(v -> {
|
messageButton.setOnClickListener(v -> {
|
||||||
if (fromConversation) {
|
if (fromConversation) {
|
||||||
|
|
|
@ -63,6 +63,7 @@ public final class ManageRecipientViewModel extends ViewModel {
|
||||||
private final LiveData<Boolean> canCollapseMemberList;
|
private final LiveData<Boolean> canCollapseMemberList;
|
||||||
private final DefaultValueLiveData<CollapseState> groupListCollapseState;
|
private final DefaultValueLiveData<CollapseState> groupListCollapseState;
|
||||||
private final LiveData<Boolean> canBlock;
|
private final LiveData<Boolean> canBlock;
|
||||||
|
private final LiveData<Boolean> canUnblock;
|
||||||
private final LiveData<List<GroupMemberEntry.FullMember>> visibleSharedGroups;
|
private final LiveData<List<GroupMemberEntry.FullMember>> visibleSharedGroups;
|
||||||
private final LiveData<String> sharedGroupsCountSummary;
|
private final LiveData<String> sharedGroupsCountSummary;
|
||||||
private final LiveData<Boolean> canAddToAGroup;
|
private final LiveData<Boolean> canAddToAGroup;
|
||||||
|
@ -79,7 +80,8 @@ public final class ManageRecipientViewModel extends ViewModel {
|
||||||
this.disappearingMessageTimer = Transformations.map(this.recipient, r -> ExpirationUtil.getExpirationDisplayValue(context, r.getExpireMessages()));
|
this.disappearingMessageTimer = Transformations.map(this.recipient, r -> ExpirationUtil.getExpirationDisplayValue(context, r.getExpireMessages()));
|
||||||
this.muteState = Transformations.map(this.recipient, r -> new MuteState(r.getMuteUntil(), r.isMuted()));
|
this.muteState = Transformations.map(this.recipient, r -> new MuteState(r.getMuteUntil(), r.isMuted()));
|
||||||
this.hasCustomNotifications = Transformations.map(this.recipient, r -> r.getNotificationChannel() != null || !NotificationChannels.supported());
|
this.hasCustomNotifications = Transformations.map(this.recipient, r -> r.getNotificationChannel() != null || !NotificationChannels.supported());
|
||||||
this.canBlock = Transformations.map(this.recipient, r -> !r.isBlocked());
|
this.canBlock = Transformations.map(this.recipient, r -> RecipientUtil.isBlockable(r) && !r.isBlocked());
|
||||||
|
this.canUnblock = Transformations.map(this.recipient, Recipient::isBlocked);
|
||||||
this.internalDetails = Transformations.map(this.recipient, this::populateInternalDetails);
|
this.internalDetails = Transformations.map(this.recipient, this::populateInternalDetails);
|
||||||
|
|
||||||
manageRecipientRepository.getThreadId(this::onThreadIdLoaded);
|
manageRecipientRepository.getThreadId(this::onThreadIdLoaded);
|
||||||
|
@ -181,6 +183,10 @@ public final class ManageRecipientViewModel extends ViewModel {
|
||||||
return canBlock;
|
return canBlock;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
LiveData<Boolean> getCanUnblock() {
|
||||||
|
return canUnblock;
|
||||||
|
}
|
||||||
|
|
||||||
void handleExpirationSelection(@NonNull Context context) {
|
void handleExpirationSelection(@NonNull Context context) {
|
||||||
withRecipient(recipient ->
|
withRecipient(recipient ->
|
||||||
ExpirationDialog.show(context,
|
ExpirationDialog.show(context,
|
||||||
|
|
Ładowanie…
Reference in New Issue