diff --git a/res/values/strings.xml b/res/values/strings.xml
index c230428c632..f39a459e520 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -402,7 +402,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
@@ -569,6 +570,7 @@
Duplicate message.
+ Group updated
Left the group
Secure session reset.
Draft:
@@ -876,7 +878,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 2c5365be87a..1da0a55d85a 100644
--- a/src/org/thoughtcrime/securesms/database/model/MessageRecord.java
+++ b/src/org/thoughtcrime/securesms/database/model/MessageRecord.java
@@ -25,8 +25,8 @@
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 boolean isAsymmetricEncryption() {
@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 ab766227c41..8f39fd379be 100644
--- a/src/org/thoughtcrime/securesms/database/model/ThreadRecord.java
+++ b/src/org/thoughtcrime/securesms/database/model/ThreadRecord.java
@@ -28,10 +28,8 @@
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 SpannableString getDisplayBody() {
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 3a1422dce53..6b35fe870ee 100644
--- a/src/org/thoughtcrime/securesms/util/GroupUtil.java
+++ b/src/org/thoughtcrime/securesms/util/GroupUtil.java
@@ -6,6 +6,7 @@
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 GroupDescription(@NonNull Context context, @Nullable GroupContext groupCo
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) {