From 28b8d080c4c5bc280ad3e84711df4ffb49d3f559 Mon Sep 17 00:00:00 2001 From: Mikunj Date: Thu, 12 Sep 2019 11:08:45 +1000 Subject: [PATCH] Correctly show quote author name in group chats. --- .../securesms/components/InputPanel.java | 4 ++-- .../securesms/components/QuoteView.java | 18 +++++++++++++++++- .../conversation/ConversationActivity.java | 9 ++++++--- .../conversation/ConversationItem.java | 2 +- 4 files changed, 26 insertions(+), 7 deletions(-) diff --git a/src/org/thoughtcrime/securesms/components/InputPanel.java b/src/org/thoughtcrime/securesms/components/InputPanel.java index f9fd36ab95..f23c2424c4 100644 --- a/src/org/thoughtcrime/securesms/components/InputPanel.java +++ b/src/org/thoughtcrime/securesms/components/InputPanel.java @@ -150,8 +150,8 @@ public class InputPanel extends LinearLayout composeText.setMediaListener(listener); } - public void setQuote(@NonNull GlideRequests glideRequests, long id, @NonNull Recipient author, @NonNull String body, @NonNull SlideDeck attachments) { - this.quoteView.setQuote(glideRequests, id, author, body, false, attachments); + public void setQuote(@NonNull GlideRequests glideRequests, long id, @NonNull Recipient author, @NonNull String body, @NonNull SlideDeck attachments, @NonNull Recipient conversationRecipient) { + this.quoteView.setQuote(glideRequests, id, author, body, false, attachments, conversationRecipient); this.quoteView.setVisibility(View.VISIBLE); if (this.linkPreview.getVisibility() == View.VISIBLE) { diff --git a/src/org/thoughtcrime/securesms/components/QuoteView.java b/src/org/thoughtcrime/securesms/components/QuoteView.java index ef9dccff24..1f2801ef9d 100644 --- a/src/org/thoughtcrime/securesms/components/QuoteView.java +++ b/src/org/thoughtcrime/securesms/components/QuoteView.java @@ -28,6 +28,7 @@ import org.thoughtcrime.securesms.mms.Slide; import org.thoughtcrime.securesms.mms.SlideDeck; import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.recipients.RecipientModifiedListener; +import org.thoughtcrime.securesms.util.GroupUtil; import org.thoughtcrime.securesms.util.ThemeUtil; import org.thoughtcrime.securesms.util.Util; import org.whispersystems.signalservice.loki.api.LokiGroupChatAPI; @@ -58,6 +59,7 @@ public class QuoteView extends FrameLayout implements RecipientModifiedListener private long id; private Recipient author; private String body; + private Recipient conversationRecipient; private TextView mediaDescriptionText; private TextView missingLinkText; private SlideDeck attachments; @@ -145,7 +147,8 @@ public class QuoteView extends FrameLayout implements RecipientModifiedListener @NonNull Recipient author, @Nullable String body, boolean originalMissing, - @NonNull SlideDeck attachments) + @NonNull SlideDeck attachments, + @NonNull Recipient conversationRecipient) { if (this.author != null) this.author.removeListener(this); @@ -153,6 +156,7 @@ public class QuoteView extends FrameLayout implements RecipientModifiedListener this.author = author; this.body = body; this.attachments = attachments; + this.conversationRecipient = conversationRecipient; author.addListener(this); setQuoteAuthor(author); @@ -193,6 +197,18 @@ public class QuoteView extends FrameLayout implements RecipientModifiedListener if (quoteeDisplayName.equals(author.getAddress().toString())) { quoteeDisplayName = DatabaseFactory.getLokiUserDatabase(getContext()).getServerDisplayName(LokiGroupChatAPI.getPublicChatServer() + "." + LokiGroupChatAPI.getPublicChatServerID(), author.getAddress().toString()); } + + // If we're in a group then try and use the display name in the group + if (conversationRecipient.isGroupRecipient()) { + try { + String serverId = GroupUtil.getDecodedStringId(conversationRecipient.getAddress().serialize()); + String senderDisplayName = DatabaseFactory.getLokiUserDatabase(getContext()).getServerDisplayName(serverId, author.getAddress().serialize()); + if (senderDisplayName != null) { quoteeDisplayName = senderDisplayName; } + } catch (Exception e) { + // Do nothing + } + } + authorView.setText(isOwnNumber ? getContext().getString(R.string.QuoteView_you) : quoteeDisplayName); // We use the raw color resource because Android 4.x was struggling with tints here diff --git a/src/org/thoughtcrime/securesms/conversation/ConversationActivity.java b/src/org/thoughtcrime/securesms/conversation/ConversationActivity.java index 88c5404192..ebc7cb0c0f 100644 --- a/src/org/thoughtcrime/securesms/conversation/ConversationActivity.java +++ b/src/org/thoughtcrime/securesms/conversation/ConversationActivity.java @@ -2743,7 +2743,8 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity messageRecord.getDateSent(), author, body, - slideDeck); + slideDeck, + recipient); } else if (messageRecord.isMms() && !((MmsMessageRecord) messageRecord).getLinkPreviews().isEmpty()) { LinkPreview linkPreview = ((MmsMessageRecord) messageRecord).getLinkPreviews().get(0); @@ -2757,13 +2758,15 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity messageRecord.getDateSent(), author, messageRecord.getBody(), - slideDeck); + slideDeck, + recipient); } else { inputPanel.setQuote(GlideApp.with(this), messageRecord.getDateSent(), author, messageRecord.getBody(), - messageRecord.isMms() ? ((MmsMessageRecord) messageRecord).getSlideDeck() : new SlideDeck()); + messageRecord.isMms() ? ((MmsMessageRecord) messageRecord).getSlideDeck() : new SlideDeck(), + recipient); } } diff --git a/src/org/thoughtcrime/securesms/conversation/ConversationItem.java b/src/org/thoughtcrime/securesms/conversation/ConversationItem.java index 6dc4cf67c5..bf39982bee 100644 --- a/src/org/thoughtcrime/securesms/conversation/ConversationItem.java +++ b/src/org/thoughtcrime/securesms/conversation/ConversationItem.java @@ -775,7 +775,7 @@ public class ConversationItem extends LinearLayout if (current.isMms() && !current.isMmsNotification() && ((MediaMmsMessageRecord)current).getQuote() != null) { Quote quote = ((MediaMmsMessageRecord)current).getQuote(); //noinspection ConstantConditions - quoteView.setQuote(glideRequests, quote.getId(), Recipient.from(context, quote.getAuthor(), true), quote.getText(), quote.isOriginalMissing(), quote.getAttachment()); + quoteView.setQuote(glideRequests, quote.getId(), Recipient.from(context, quote.getAuthor(), true), quote.getText(), quote.isOriginalMissing(), quote.getAttachment(), conversationRecipient); quoteView.setVisibility(View.VISIBLE); quoteView.getLayoutParams().width = ViewGroup.LayoutParams.WRAP_CONTENT;