diff --git a/res/values/strings.xml b/res/values/strings.xml
index 688bb6a81d..c56c0332cf 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -1854,7 +1854,7 @@
*Please note that it is not possible to use the same Session ID on multiple devices simultaneously
Secure session reset done
-
+
Theme
Day
Night
@@ -1862,4 +1862,8 @@
Copy Session ID
+
+ Attachment
+ Voice Message
+
diff --git a/src/org/thoughtcrime/securesms/database/ThreadDatabase.java b/src/org/thoughtcrime/securesms/database/ThreadDatabase.java
index 1de021e206..41903ae23e 100644
--- a/src/org/thoughtcrime/securesms/database/ThreadDatabase.java
+++ b/src/org/thoughtcrime/securesms/database/ThreadDatabase.java
@@ -618,11 +618,20 @@ public class ThreadDatabase extends Database {
}
private @NonNull String getFormattedBodyFor(@NonNull MessageRecord messageRecord) {
- if (messageRecord.isMms() && ((MmsMessageRecord) messageRecord).getSharedContacts().size() > 0) {
- Contact contact = ((MmsMessageRecord) messageRecord).getSharedContacts().get(0);
- return ContactUtil.getStringSummary(context, contact).toString();
+ if (messageRecord.isMms()) {
+ MmsMessageRecord record = (MmsMessageRecord) messageRecord;
+ if (record.getSharedContacts().size() > 0) {
+ Contact contact = ((MmsMessageRecord) messageRecord).getSharedContacts().get(0);
+ return ContactUtil.getStringSummary(context, contact).toString();
+ }
+ String attachmentString = record.getSlideDeck().getBody();
+ if (!attachmentString.isEmpty()) {
+ if (!messageRecord.getBody().isEmpty()) {
+ attachmentString = attachmentString + ": " + messageRecord.getBody();
+ }
+ return attachmentString;
+ }
}
-
return messageRecord.getBody();
}
diff --git a/src/org/thoughtcrime/securesms/mms/OutgoingMediaMessage.java b/src/org/thoughtcrime/securesms/mms/OutgoingMediaMessage.java
index 6a73726448..cb5252a657 100644
--- a/src/org/thoughtcrime/securesms/mms/OutgoingMediaMessage.java
+++ b/src/org/thoughtcrime/securesms/mms/OutgoingMediaMessage.java
@@ -146,13 +146,10 @@ public class OutgoingMediaMessage {
}
private static String buildMessage(SlideDeck slideDeck, String message) {
- if (!TextUtils.isEmpty(message) && !TextUtils.isEmpty(slideDeck.getBody())) {
- return slideDeck.getBody() + "\n\n" + message;
- } else if (!TextUtils.isEmpty(message)) {
+ if (!TextUtils.isEmpty(message)) {
return message;
- } else {
- return slideDeck.getBody();
}
+ return "";
}
}
diff --git a/src/org/thoughtcrime/securesms/mms/Slide.java b/src/org/thoughtcrime/securesms/mms/Slide.java
index 2c5dc1cb16..fe9a7a9b77 100644
--- a/src/org/thoughtcrime/securesms/mms/Slide.java
+++ b/src/org/thoughtcrime/securesms/mms/Slide.java
@@ -22,7 +22,6 @@ import android.net.Uri;
import androidx.annotation.DrawableRes;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
-
import org.thoughtcrime.securesms.attachments.Attachment;
import org.thoughtcrime.securesms.attachments.UriAttachment;
import org.thoughtcrime.securesms.database.AttachmentDatabase;
@@ -33,6 +32,8 @@ import org.whispersystems.libsignal.util.guava.Optional;
import java.security.SecureRandom;
+import network.loki.messenger.R;
+
public abstract class Slide {
protected final Attachment attachment;
@@ -59,7 +60,31 @@ public abstract class Slide {
@NonNull
public Optional getBody() {
- return Optional.absent();
+ String attachmentString = context.getString(R.string.attachment);
+
+ if (MediaUtil.isAudio(attachment)) {
+ // a missing filename is the legacy way to determine if an audio attachment is
+ // a voice note vs. other arbitrary audio attachments.
+ if (attachment.isVoiceNote() || !attachment.getFileName().isEmpty()) {
+ attachmentString = context.getString(R.string.attachment_type_voice_message);
+ return Optional.fromNullable("🎤 " + attachmentString);
+ }
+ }
+ return Optional.fromNullable(emojiForMimeType() + attachmentString);
+ }
+
+ private String emojiForMimeType() {
+ if (MediaUtil.isImage(attachment)) {
+ return "📷 ";
+ } else if (MediaUtil.isVideo(attachment)) {
+ return "🎥 ";
+ } else if (MediaUtil.isAudio(attachment)) {
+ return "🎧 ";
+ } else if (MediaUtil.isFile(attachment)) {
+ return "📎 ";
+ } else {
+ return "🎡 ";
+ }
}
@NonNull
diff --git a/src/org/thoughtcrime/securesms/notifications/DefaultMessageNotifier.java b/src/org/thoughtcrime/securesms/notifications/DefaultMessageNotifier.java
index 6945c05027..974667cb6f 100644
--- a/src/org/thoughtcrime/securesms/notifications/DefaultMessageNotifier.java
+++ b/src/org/thoughtcrime/securesms/notifications/DefaultMessageNotifier.java
@@ -479,13 +479,13 @@ public class DefaultMessageNotifier implements MessageNotifier {
body = SpanUtil.italic(context.getString(R.string.MessageNotifier_sticker));
slideDeck = ((MmsMessageRecord) record).getSlideDeck();
} else if (record.isMms() && TextUtils.isEmpty(body) && !((MmsMessageRecord) record).getSlideDeck().getSlides().isEmpty()) {
- body = SpanUtil.italic(context.getString(R.string.MessageNotifier_media_message));
slideDeck = ((MediaMmsMessageRecord)record).getSlideDeck();
+ body = SpanUtil.italic(slideDeck.getBody());
} else if (record.isMms() && !record.isMmsNotification() && !((MmsMessageRecord) record).getSlideDeck().getSlides().isEmpty()) {
- String message = context.getString(R.string.MessageNotifier_media_message_with_text, body);
+ slideDeck = ((MediaMmsMessageRecord)record).getSlideDeck();
+ String message = slideDeck.getBody() + ": " + record.getBody();
int italicLength = message.length() - body.length();
body = SpanUtil.italic(message, italicLength);
- slideDeck = ((MediaMmsMessageRecord)record).getSlideDeck();
}
if (threadRecipients == null || !threadRecipients.isMuted()) {