diff --git a/res/values/strings.xml b/res/values/strings.xml
index d0da67387f..e5023275ae 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -538,7 +538,8 @@
Received message with unknown identity key. Tap to process and display.
Received updated but unknown identity information. Tap to validate identity.
- Secure session reset.
+ You reset the secure session.
+ %s reset the secure session.
Duplicate message.
diff --git a/src/org/thoughtcrime/securesms/ConversationAdapter.java b/src/org/thoughtcrime/securesms/ConversationAdapter.java
index 8ae6b194fd..91739f9054 100644
--- a/src/org/thoughtcrime/securesms/ConversationAdapter.java
+++ b/src/org/thoughtcrime/securesms/ConversationAdapter.java
@@ -195,7 +195,9 @@ public class ConversationAdapter
String type = cursor.getString(cursor.getColumnIndexOrThrow(MmsSmsDatabase.TRANSPORT));
MessageRecord messageRecord = getMessageRecord(id, cursor, type);
- if (messageRecord.isGroupAction() || messageRecord.isCallLog() || messageRecord.isJoined() || messageRecord.isExpirationTimerUpdate()) {
+ if (messageRecord.isGroupAction() || messageRecord.isCallLog() || messageRecord.isJoined() ||
+ messageRecord.isExpirationTimerUpdate() || messageRecord.isEndSession())
+ {
return MESSAGE_TYPE_UPDATE;
} else if (messageRecord.isOutgoing()) {
return MESSAGE_TYPE_OUTGOING;
diff --git a/src/org/thoughtcrime/securesms/ConversationFragment.java b/src/org/thoughtcrime/securesms/ConversationFragment.java
index c58abe367a..292d84af2a 100644
--- a/src/org/thoughtcrime/securesms/ConversationFragment.java
+++ b/src/org/thoughtcrime/securesms/ConversationFragment.java
@@ -180,7 +180,8 @@ public class ConversationFragment extends Fragment
for (MessageRecord messageRecord : messageRecords) {
if (messageRecord.isGroupAction() || messageRecord.isCallLog() ||
- messageRecord.isJoined() || messageRecord.isExpirationTimerUpdate())
+ messageRecord.isJoined() || messageRecord.isExpirationTimerUpdate() ||
+ messageRecord.isEndSession())
{
actionMessage = true;
break;
diff --git a/src/org/thoughtcrime/securesms/ConversationUpdateItem.java b/src/org/thoughtcrime/securesms/ConversationUpdateItem.java
index 1521ce0002..1e27a50d28 100644
--- a/src/org/thoughtcrime/securesms/ConversationUpdateItem.java
+++ b/src/org/thoughtcrime/securesms/ConversationUpdateItem.java
@@ -86,6 +86,7 @@ public class ConversationUpdateItem extends LinearLayout
else if (messageRecord.isCallLog()) setCallRecord(messageRecord);
else if (messageRecord.isJoined()) setJoinedRecord(messageRecord);
else if (messageRecord.isExpirationTimerUpdate()) setTimerRecord(messageRecord);
+ else if (messageRecord.isEndSession()) setEndSessionRecord(messageRecord);
else throw new AssertionError("Neither group nor log nor joined.");
}
@@ -129,6 +130,13 @@ public class ConversationUpdateItem extends LinearLayout
date.setVisibility(View.GONE);
}
+ private void setEndSessionRecord(MessageRecord messageRecord) {
+ icon.setImageResource(R.drawable.ic_refresh_white_24dp);
+ icon.setColorFilter(new PorterDuffColorFilter(Color.parseColor("#757575"), PorterDuff.Mode.MULTIPLY));
+ body.setText(messageRecord.getDisplayBody());
+ date.setVisibility(View.GONE);
+ }
+
@Override
public void onModified(Recipients recipients) {
onModified(recipients.getPrimaryRecipient());
diff --git a/src/org/thoughtcrime/securesms/database/model/SmsMessageRecord.java b/src/org/thoughtcrime/securesms/database/model/SmsMessageRecord.java
index 88eaa25be4..1342abbe50 100644
--- a/src/org/thoughtcrime/securesms/database/model/SmsMessageRecord.java
+++ b/src/org/thoughtcrime/securesms/database/model/SmsMessageRecord.java
@@ -90,8 +90,10 @@ public class SmsMessageRecord extends MessageRecord {
return emphasisAdded(context.getString(R.string.MessageDisplayHelper_message_encrypted_for_non_existing_session));
} else if (!getBody().isPlaintext()) {
return emphasisAdded(context.getString(R.string.MessageNotifier_locked_message));
- } else if (SmsDatabase.Types.isEndSessionType(type)) {
+ } else if (isEndSession() && isOutgoing()) {
return emphasisAdded(context.getString(R.string.SmsMessageRecord_secure_session_reset));
+ } else if (isEndSession()) {
+ return emphasisAdded(context.getString(R.string.SmsMessageRecord_secure_session_reset_s, getIndividualRecipient().toShortString()));
} else {
return super.getDisplayBody();
}