diff --git a/res/values/strings.xml b/res/values/strings.xml
index c73b9a55f4..a17e947240 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -413,6 +413,8 @@
Called %s
Missed call from %s
%s is on Signal!
+ You disabled disappearing messages.
+ %1$s disabled disappearing messages.
You set the disappearing message timer to %1$s.
%1$s set the disappearing message timer to %2$s.
Your safety number with %s has changed.
@@ -571,6 +573,7 @@
Missed call
Media message
%s is on Signal!
+ Disappearing messages disabled
Disappearing message time set to %s
Safety number changed
Your safety number with %s has changed.
diff --git a/src/org/thoughtcrime/securesms/database/model/MessageRecord.java b/src/org/thoughtcrime/securesms/database/model/MessageRecord.java
index ab4a9c0b83..436dbe4cea 100644
--- a/src/org/thoughtcrime/securesms/database/model/MessageRecord.java
+++ b/src/org/thoughtcrime/securesms/database/model/MessageRecord.java
@@ -105,7 +105,12 @@ public abstract class MessageRecord extends DisplayRecord {
} else if (isJoined()) {
return new SpannableString(context.getString(R.string.MessageRecord_s_joined_signal, getIndividualRecipient().toShortString()));
} else if (isExpirationTimerUpdate()) {
- String time = ExpirationUtil.getExpirationDisplayValue(context, (int)(getExpiresIn() / 1000));
+ int seconds = (int)(getExpiresIn() / 1000);
+ if (seconds <= 0) {
+ return isOutgoing() ? new SpannableString(context.getString(R.string.MessageRecord_you_disabled_disappearing_messages))
+ : new SpannableString(context.getString(R.string.MessageRecord_s_disabled_disappearing_messages, getIndividualRecipient().toShortString()));
+ }
+ String time = ExpirationUtil.getExpirationDisplayValue(context, seconds);
return isOutgoing() ? new SpannableString(context.getString(R.string.MessageRecord_you_set_disappearing_message_time_to_s, time))
: new SpannableString(context.getString(R.string.MessageRecord_s_set_disappearing_message_time_to_s, getIndividualRecipient().toShortString(), time));
} else if (isIdentityUpdate()) {
diff --git a/src/org/thoughtcrime/securesms/database/model/ThreadRecord.java b/src/org/thoughtcrime/securesms/database/model/ThreadRecord.java
index e0e1c6aa87..2bc29f5137 100644
--- a/src/org/thoughtcrime/securesms/database/model/ThreadRecord.java
+++ b/src/org/thoughtcrime/securesms/database/model/ThreadRecord.java
@@ -98,7 +98,11 @@ public class ThreadRecord extends DisplayRecord {
} else if (SmsDatabase.Types.isJoinedType(type)) {
return emphasisAdded(context.getString(R.string.ThreadRecord_s_is_on_signal, getRecipient().toShortString()));
} else if (SmsDatabase.Types.isExpirationTimerUpdate(type)) {
- String time = ExpirationUtil.getExpirationDisplayValue(context, (int) (getExpiresIn() / 1000));
+ int seconds = (int)(getExpiresIn() / 1000);
+ if (seconds <= 0) {
+ return emphasisAdded(context.getString(R.string.ThreadRecord_disappearing_messages_disabled));
+ }
+ String time = ExpirationUtil.getExpirationDisplayValue(context, seconds);
return emphasisAdded(context.getString(R.string.ThreadRecord_disappearing_message_time_updated_to_s, time));
} else if (SmsDatabase.Types.isIdentityUpdate(type)) {
if (getRecipient().isGroupRecipient()) return emphasisAdded(context.getString(R.string.ThreadRecord_safety_number_changed));