Fix some UX issues with blocked users.

This commit is contained in:
Greyson Parrelli 2020-04-22 11:12:08 -04:00
parent 1b5a0ab9f3
commit fd21fc1a31
3 changed files with 21 additions and 8 deletions

View File

@ -304,7 +304,6 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
private Button makeDefaultSmsButton; private Button makeDefaultSmsButton;
private Button registerButton; private Button registerButton;
private InputAwareLayout container; private InputAwareLayout container;
private View composePanel;
protected Stub<ReminderView> reminderView; protected Stub<ReminderView> reminderView;
private Stub<UnverifiedBannerView> unverifiedBannerView; private Stub<UnverifiedBannerView> unverifiedBannerView;
private Stub<GroupShareProfileView> groupShareProfileView; private Stub<GroupShareProfileView> groupShareProfileView;
@ -767,6 +766,15 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
} }
} }
if (recipient != null && recipient.get().isBlocked()) {
if (isSecureText) {
menu.findItem(R.id.menu_call_secure).setVisible(false);
menu.findItem(R.id.menu_video_secure).setVisible(false);
} else {
menu.findItem(R.id.menu_call_insecure).setVisible(false);
}
}
searchViewItem = menu.findItem(R.id.menu_search); searchViewItem = menu.findItem(R.id.menu_search);
SearchView searchView = (SearchView) searchViewItem.getActionView(); SearchView searchView = (SearchView) searchViewItem.getActionView();
@ -812,6 +820,7 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
searchNav.setVisibility(View.GONE); searchNav.setVisibility(View.GONE);
inputPanel.setVisibility(View.VISIBLE); inputPanel.setVisibility(View.VISIBLE);
fragment.onSearchQueryUpdated(null); fragment.onSearchQueryUpdated(null);
setBlockedUserState(recipient.get(), isSecureText, isDefaultSms);
invalidateOptionsMenu(); invalidateOptionsMenu();
return true; return true;
} }
@ -1623,7 +1632,6 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
unblockButton = ViewUtil.findById(this, R.id.unblock_button); unblockButton = ViewUtil.findById(this, R.id.unblock_button);
makeDefaultSmsButton = ViewUtil.findById(this, R.id.make_default_sms_button); makeDefaultSmsButton = ViewUtil.findById(this, R.id.make_default_sms_button);
registerButton = ViewUtil.findById(this, R.id.register_button); registerButton = ViewUtil.findById(this, R.id.register_button);
composePanel = ViewUtil.findById(this, R.id.bottom_panel);
container = ViewUtil.findById(this, R.id.layout_container); container = ViewUtil.findById(this, R.id.layout_container);
reminderView = ViewUtil.findStubById(this, R.id.reminder_stub); reminderView = ViewUtil.findStubById(this, R.id.reminder_stub);
unverifiedBannerView = ViewUtil.findStubById(this, R.id.unverified_banner_stub); unverifiedBannerView = ViewUtil.findStubById(this, R.id.unverified_banner_stub);
@ -2030,21 +2038,21 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
private void setBlockedUserState(Recipient recipient, boolean isSecureText, boolean isDefaultSms) { private void setBlockedUserState(Recipient recipient, boolean isSecureText, boolean isDefaultSms) {
if (recipient.isBlocked() && !FeatureFlags.messageRequests()) { if (recipient.isBlocked() && !FeatureFlags.messageRequests()) {
unblockButton.setVisibility(View.VISIBLE); unblockButton.setVisibility(View.VISIBLE);
composePanel.setVisibility(View.GONE); inputPanel.setVisibility(View.GONE);
makeDefaultSmsButton.setVisibility(View.GONE); makeDefaultSmsButton.setVisibility(View.GONE);
registerButton.setVisibility(View.GONE); registerButton.setVisibility(View.GONE);
} else if (!isSecureText && isPushGroupConversation()) { } else if (!isSecureText && isPushGroupConversation()) {
unblockButton.setVisibility(View.GONE); unblockButton.setVisibility(View.GONE);
composePanel.setVisibility(View.GONE); inputPanel.setVisibility(View.GONE);
makeDefaultSmsButton.setVisibility(View.GONE); makeDefaultSmsButton.setVisibility(View.GONE);
registerButton.setVisibility(View.VISIBLE); registerButton.setVisibility(View.VISIBLE);
} else if (!isSecureText && !isDefaultSms) { } else if (!isSecureText && !isDefaultSms) {
unblockButton.setVisibility(View.GONE); unblockButton.setVisibility(View.GONE);
composePanel.setVisibility(View.GONE); inputPanel.setVisibility(View.GONE);
makeDefaultSmsButton.setVisibility(View.VISIBLE); makeDefaultSmsButton.setVisibility(View.VISIBLE);
registerButton.setVisibility(View.GONE); registerButton.setVisibility(View.GONE);
} else { } else {
composePanel.setVisibility(View.VISIBLE); inputPanel.setVisibility(View.VISIBLE);
unblockButton.setVisibility(View.GONE); unblockButton.setVisibility(View.GONE);
makeDefaultSmsButton.setVisibility(View.GONE); makeDefaultSmsButton.setVisibility(View.GONE);
registerButton.setVisibility(View.GONE); registerButton.setVisibility(View.GONE);
@ -2761,7 +2769,7 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
@Override @Override
public void onTextChanged(String text) { public void onTextChanged(String text) {
if (enabled && threadId > 0 && isSecureText && !isSmsForced()) { if (enabled && threadId > 0 && isSecureText && !isSmsForced() && !recipient.get().isBlocked()) {
ApplicationContext.getInstance(ConversationActivity.this).getTypingStatusSender().onTypingStarted(threadId); ApplicationContext.getInstance(ConversationActivity.this).getTypingStatusSender().onTypingStarted(threadId);
} }
} }

View File

@ -115,7 +115,8 @@ final class MenuState {
!messageRecord.isPending() && !messageRecord.isPending() &&
!messageRecord.isFailed() && !messageRecord.isFailed() &&
!isDisplayingMessageRequest && !isDisplayingMessageRequest &&
messageRecord.isSecure(); messageRecord.isSecure() &&
!messageRecord.getRecipient().isBlocked();
} }
static boolean isActionMessage(@NonNull MessageRecord messageRecord) { static boolean isActionMessage(@NonNull MessageRecord messageRecord) {

View File

@ -82,6 +82,10 @@ public class TypingSendJob extends BaseJob {
return; return;
} }
if (recipient.isBlocked()) {
Log.w(TAG, "Not sending typing indicators to blocked recipients.");
}
List<Recipient> recipients = Collections.singletonList(recipient); List<Recipient> recipients = Collections.singletonList(recipient);
Optional<byte[]> groupId = Optional.absent(); Optional<byte[]> groupId = Optional.absent();