From 3506f2db12a72e43e3ab4d1d7af931ba3786d457 Mon Sep 17 00:00:00 2001 From: Christian Ascheberg Date: Tue, 5 Apr 2016 16:33:40 +0200 Subject: [PATCH] Improve group update descriptions Closes #5416 // FREEBIE --- res/values/strings.xml | 5 ++-- .../database/model/MessageRecord.java | 6 ++--- .../database/model/ThreadRecord.java | 4 +--- .../securesms/util/GroupUtil.java | 23 ++++++++++--------- 4 files changed, 19 insertions(+), 19 deletions(-) diff --git a/res/values/strings.xml b/res/values/strings.xml index 14a1e55fd..5ede7d411 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -408,7 +408,8 @@ Received a message encrypted using an old version of Signal that is no longer supported. Please ask the sender to update to the most recent version and resend the message. You have left the group. - Updated the group. + You updated the group. + %s updated the group. %s called you Called %s Missed call from %s @@ -575,6 +576,7 @@ Duplicate message. + Group updated Left the group Secure session reset. Draft: @@ -886,7 +888,6 @@ %1$s joined the group. %1$s joined the group. - Group updated. Group name is now \'%1$s\'. diff --git a/src/org/thoughtcrime/securesms/database/model/MessageRecord.java b/src/org/thoughtcrime/securesms/database/model/MessageRecord.java index 2c5365be8..1da0a55d8 100644 --- a/src/org/thoughtcrime/securesms/database/model/MessageRecord.java +++ b/src/org/thoughtcrime/securesms/database/model/MessageRecord.java @@ -25,8 +25,8 @@ import android.text.style.StyleSpan; import org.thoughtcrime.securesms.R; import org.thoughtcrime.securesms.database.MmsSmsColumns; import org.thoughtcrime.securesms.database.SmsDatabase; -import org.thoughtcrime.securesms.database.documents.NetworkFailure; import org.thoughtcrime.securesms.database.documents.IdentityKeyMismatch; +import org.thoughtcrime.securesms.database.documents.NetworkFailure; import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.recipients.Recipients; import org.thoughtcrime.securesms.util.ExpirationUtil; @@ -93,9 +93,9 @@ public abstract class MessageRecord extends DisplayRecord { @Override public SpannableString getDisplayBody() { if (isGroupUpdate() && isOutgoing()) { - return emphasisAdded(context.getString(R.string.MessageRecord_updated_group)); + return emphasisAdded(context.getString(R.string.MessageRecord_you_updated_group)); } else if (isGroupUpdate()) { - return emphasisAdded(GroupUtil.getDescription(context, getBody().getBody()).toString()); + return emphasisAdded(GroupUtil.getDescription(context, getBody().getBody()).toString(getIndividualRecipient())); } else if (isGroupQuit() && isOutgoing()) { return emphasisAdded(context.getString(R.string.MessageRecord_left_group)); } else if (isGroupQuit()) { diff --git a/src/org/thoughtcrime/securesms/database/model/ThreadRecord.java b/src/org/thoughtcrime/securesms/database/model/ThreadRecord.java index ab766227c..8f39fd379 100644 --- a/src/org/thoughtcrime/securesms/database/model/ThreadRecord.java +++ b/src/org/thoughtcrime/securesms/database/model/ThreadRecord.java @@ -28,10 +28,8 @@ import android.text.style.StyleSpan; import org.thoughtcrime.securesms.R; import org.thoughtcrime.securesms.database.MmsSmsColumns; import org.thoughtcrime.securesms.database.SmsDatabase; -import org.thoughtcrime.securesms.database.ThreadDatabase; import org.thoughtcrime.securesms.recipients.Recipients; import org.thoughtcrime.securesms.util.ExpirationUtil; -import org.thoughtcrime.securesms.util.GroupUtil; /** * The message record model which represents thread heading messages. @@ -75,7 +73,7 @@ public class ThreadRecord extends DisplayRecord { if (SmsDatabase.Types.isDecryptInProgressType(type)) { return emphasisAdded(context.getString(R.string.MessageDisplayHelper_decrypting_please_wait)); } else if (isGroupUpdate()) { - return emphasisAdded(GroupUtil.getDescription(context, getBody().getBody()).toString()); + return emphasisAdded(context.getString(R.string.ThreadRecord_group_updated)); } else if (isGroupQuit()) { return emphasisAdded(context.getString(R.string.ThreadRecord_left_the_group)); } else if (isKeyExchange()) { diff --git a/src/org/thoughtcrime/securesms/util/GroupUtil.java b/src/org/thoughtcrime/securesms/util/GroupUtil.java index 3a1422dce..6b35fe870 100644 --- a/src/org/thoughtcrime/securesms/util/GroupUtil.java +++ b/src/org/thoughtcrime/securesms/util/GroupUtil.java @@ -6,6 +6,7 @@ import android.support.annotation.Nullable; import android.util.Log; import org.thoughtcrime.securesms.R; +import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.recipients.RecipientFactory; import org.thoughtcrime.securesms.recipients.Recipients; @@ -61,33 +62,33 @@ public class GroupUtil { if (groupContext == null || groupContext.getMembersList().isEmpty()) { this.members = null; } else { - this.members = RecipientFactory.getRecipientsFromString(context, Util.join(groupContext.getMembersList(), ", "), true); + this.members = RecipientFactory.getRecipientsFromStrings(context, groupContext.getMembersList(), true); } } - public String toString() { + public String toString(Recipient sender) { + StringBuilder description = new StringBuilder(); + description.append(context.getString(R.string.MessageRecord_s_updated_group, sender.toShortString())); + if (groupContext == null) { - return context.getString(R.string.GroupUtil_group_updated); + return description.toString(); } - StringBuilder description = new StringBuilder(); - String title = groupContext.getName(); + String title = groupContext.getName(); if (members != null) { + description.append("\n"); description.append(context.getResources().getQuantityString(R.plurals.GroupUtil_joined_the_group, members.getRecipientsList().size(), members.toShortString())); } if (title != null && !title.trim().isEmpty()) { - if (description.length() > 0) description.append(" "); + if (members != null) description.append(" "); + else description.append("\n"); description.append(context.getString(R.string.GroupUtil_group_name_is_now, title)); } - if (description.length() > 0) { - return description.toString(); - } else { - return context.getString(R.string.GroupUtil_group_updated); - } + return description.toString(); } public void addListener(Recipients.RecipientsModifiedListener listener) {