Merge pull request #23 from loki-project/bug-fix

Correctly show quote author name in group chats.
This commit is contained in:
Mikunj Varsani 2019-09-30 12:04:57 +10:00 committed by GitHub
commit c70de8c569
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 26 additions and 7 deletions

View File

@ -150,8 +150,8 @@ public class InputPanel extends LinearLayout
composeText.setMediaListener(listener); composeText.setMediaListener(listener);
} }
public void setQuote(@NonNull GlideRequests glideRequests, long id, @NonNull Recipient author, @NonNull String body, @NonNull SlideDeck 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); this.quoteView.setQuote(glideRequests, id, author, body, false, attachments, conversationRecipient);
this.quoteView.setVisibility(View.VISIBLE); this.quoteView.setVisibility(View.VISIBLE);
if (this.linkPreview.getVisibility() == View.VISIBLE) { if (this.linkPreview.getVisibility() == View.VISIBLE) {

View File

@ -28,6 +28,7 @@ import org.thoughtcrime.securesms.mms.Slide;
import org.thoughtcrime.securesms.mms.SlideDeck; import org.thoughtcrime.securesms.mms.SlideDeck;
import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.recipients.Recipient;
import org.thoughtcrime.securesms.recipients.RecipientModifiedListener; import org.thoughtcrime.securesms.recipients.RecipientModifiedListener;
import org.thoughtcrime.securesms.util.GroupUtil;
import org.thoughtcrime.securesms.util.ThemeUtil; import org.thoughtcrime.securesms.util.ThemeUtil;
import org.thoughtcrime.securesms.util.Util; import org.thoughtcrime.securesms.util.Util;
import org.whispersystems.signalservice.loki.api.LokiGroupChatAPI; import org.whispersystems.signalservice.loki.api.LokiGroupChatAPI;
@ -58,6 +59,7 @@ public class QuoteView extends FrameLayout implements RecipientModifiedListener
private long id; private long id;
private Recipient author; private Recipient author;
private String body; private String body;
private Recipient conversationRecipient;
private TextView mediaDescriptionText; private TextView mediaDescriptionText;
private TextView missingLinkText; private TextView missingLinkText;
private SlideDeck attachments; private SlideDeck attachments;
@ -145,7 +147,8 @@ public class QuoteView extends FrameLayout implements RecipientModifiedListener
@NonNull Recipient author, @NonNull Recipient author,
@Nullable String body, @Nullable String body,
boolean originalMissing, boolean originalMissing,
@NonNull SlideDeck attachments) @NonNull SlideDeck attachments,
@NonNull Recipient conversationRecipient)
{ {
if (this.author != null) this.author.removeListener(this); if (this.author != null) this.author.removeListener(this);
@ -153,6 +156,7 @@ public class QuoteView extends FrameLayout implements RecipientModifiedListener
this.author = author; this.author = author;
this.body = body; this.body = body;
this.attachments = attachments; this.attachments = attachments;
this.conversationRecipient = conversationRecipient;
author.addListener(this); author.addListener(this);
setQuoteAuthor(author); setQuoteAuthor(author);
@ -193,6 +197,18 @@ public class QuoteView extends FrameLayout implements RecipientModifiedListener
if (quoteeDisplayName.equals(author.getAddress().toString())) { if (quoteeDisplayName.equals(author.getAddress().toString())) {
quoteeDisplayName = DatabaseFactory.getLokiUserDatabase(getContext()).getServerDisplayName(LokiGroupChatAPI.getPublicChatServer() + "." + LokiGroupChatAPI.getPublicChatServerID(), 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); 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 // We use the raw color resource because Android 4.x was struggling with tints here

View File

@ -2750,7 +2750,8 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
messageRecord.getDateSent(), messageRecord.getDateSent(),
author, author,
body, body,
slideDeck); slideDeck,
recipient);
} else if (messageRecord.isMms() && !((MmsMessageRecord) messageRecord).getLinkPreviews().isEmpty()) { } else if (messageRecord.isMms() && !((MmsMessageRecord) messageRecord).getLinkPreviews().isEmpty()) {
LinkPreview linkPreview = ((MmsMessageRecord) messageRecord).getLinkPreviews().get(0); LinkPreview linkPreview = ((MmsMessageRecord) messageRecord).getLinkPreviews().get(0);
@ -2764,13 +2765,15 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
messageRecord.getDateSent(), messageRecord.getDateSent(),
author, author,
messageRecord.getBody(), messageRecord.getBody(),
slideDeck); slideDeck,
recipient);
} else { } else {
inputPanel.setQuote(GlideApp.with(this), inputPanel.setQuote(GlideApp.with(this),
messageRecord.getDateSent(), messageRecord.getDateSent(),
author, author,
messageRecord.getBody(), messageRecord.getBody(),
messageRecord.isMms() ? ((MmsMessageRecord) messageRecord).getSlideDeck() : new SlideDeck()); messageRecord.isMms() ? ((MmsMessageRecord) messageRecord).getSlideDeck() : new SlideDeck(),
recipient);
} }
} }

View File

@ -788,7 +788,7 @@ public class ConversationItem extends LinearLayout
if (current.isMms() && !current.isMmsNotification() && ((MediaMmsMessageRecord)current).getQuote() != null) { if (current.isMms() && !current.isMmsNotification() && ((MediaMmsMessageRecord)current).getQuote() != null) {
Quote quote = ((MediaMmsMessageRecord)current).getQuote(); Quote quote = ((MediaMmsMessageRecord)current).getQuote();
//noinspection ConstantConditions //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.setVisibility(View.VISIBLE);
quoteView.getLayoutParams().width = ViewGroup.LayoutParams.WRAP_CONTENT; quoteView.getLayoutParams().width = ViewGroup.LayoutParams.WRAP_CONTENT;