From fd21fc1a31f139723918e2588fe54a4fc69e5981 Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Wed, 22 Apr 2020 11:12:08 -0400 Subject: [PATCH] Fix some UX issues with blocked users. --- .../conversation/ConversationActivity.java | 22 +++++++++++++------ .../securesms/conversation/MenuState.java | 3 ++- .../securesms/jobs/TypingSendJob.java | 4 ++++ 3 files changed, 21 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationActivity.java b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationActivity.java index d7d488278d..dd4e7b60b6 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationActivity.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationActivity.java @@ -304,7 +304,6 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity private Button makeDefaultSmsButton; private Button registerButton; private InputAwareLayout container; - private View composePanel; protected Stub reminderView; private Stub unverifiedBannerView; private Stub 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); SearchView searchView = (SearchView) searchViewItem.getActionView(); @@ -812,6 +820,7 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity searchNav.setVisibility(View.GONE); inputPanel.setVisibility(View.VISIBLE); fragment.onSearchQueryUpdated(null); + setBlockedUserState(recipient.get(), isSecureText, isDefaultSms); invalidateOptionsMenu(); return true; } @@ -1623,7 +1632,6 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity unblockButton = ViewUtil.findById(this, R.id.unblock_button); makeDefaultSmsButton = ViewUtil.findById(this, R.id.make_default_sms_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); reminderView = ViewUtil.findStubById(this, R.id.reminder_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) { if (recipient.isBlocked() && !FeatureFlags.messageRequests()) { unblockButton.setVisibility(View.VISIBLE); - composePanel.setVisibility(View.GONE); + inputPanel.setVisibility(View.GONE); makeDefaultSmsButton.setVisibility(View.GONE); registerButton.setVisibility(View.GONE); } else if (!isSecureText && isPushGroupConversation()) { unblockButton.setVisibility(View.GONE); - composePanel.setVisibility(View.GONE); + inputPanel.setVisibility(View.GONE); makeDefaultSmsButton.setVisibility(View.GONE); registerButton.setVisibility(View.VISIBLE); } else if (!isSecureText && !isDefaultSms) { unblockButton.setVisibility(View.GONE); - composePanel.setVisibility(View.GONE); + inputPanel.setVisibility(View.GONE); makeDefaultSmsButton.setVisibility(View.VISIBLE); registerButton.setVisibility(View.GONE); } else { - composePanel.setVisibility(View.VISIBLE); + inputPanel.setVisibility(View.VISIBLE); unblockButton.setVisibility(View.GONE); makeDefaultSmsButton.setVisibility(View.GONE); registerButton.setVisibility(View.GONE); @@ -2761,7 +2769,7 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity @Override 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); } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/MenuState.java b/app/src/main/java/org/thoughtcrime/securesms/conversation/MenuState.java index 92de237d6e..4beffac096 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/MenuState.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/MenuState.java @@ -115,7 +115,8 @@ final class MenuState { !messageRecord.isPending() && !messageRecord.isFailed() && !isDisplayingMessageRequest && - messageRecord.isSecure(); + messageRecord.isSecure() && + !messageRecord.getRecipient().isBlocked(); } static boolean isActionMessage(@NonNull MessageRecord messageRecord) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/TypingSendJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/TypingSendJob.java index 0ed2f89505..f9e68a985e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/TypingSendJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/TypingSendJob.java @@ -82,6 +82,10 @@ public class TypingSendJob extends BaseJob { return; } + if (recipient.isBlocked()) { + Log.w(TAG, "Not sending typing indicators to blocked recipients."); + } + List recipients = Collections.singletonList(recipient); Optional groupId = Optional.absent();