From e1b24ab8787544cc7f06d2be105ef44254a38f51 Mon Sep 17 00:00:00 2001 From: Christian Ascheberg Date: Mon, 12 Sep 2016 17:26:46 +0200 Subject: [PATCH] Fix display of secure session reset records Fixes #5605 Closes #5680 // FREEBIE --- res/values/strings.xml | 3 ++- src/org/thoughtcrime/securesms/ConversationAdapter.java | 4 +++- src/org/thoughtcrime/securesms/ConversationFragment.java | 3 ++- .../thoughtcrime/securesms/ConversationUpdateItem.java | 8 ++++++++ .../securesms/database/model/SmsMessageRecord.java | 4 +++- 5 files changed, 18 insertions(+), 4 deletions(-) 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(); }