Merge remote-tracking branch 'loki/dev' into profile-pic-placeholder

This commit is contained in:
Anton Chekulaev
2020-09-03 22:15:20 +10:00
9 changed files with 66 additions and 24 deletions

View File

@@ -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();
}

View File

@@ -186,6 +186,13 @@ class PublicChatPoller(private val context: Context, private val group: PublicCh
}
fun processOutgoingMessage(message: PublicChatMessage) {
val messageServerID = message.serverID ?: return
val messageID = DatabaseFactory.getLokiMessageDatabase(context).getMessageID(messageServerID)
var isDuplicate = false
if (messageID != null) {
isDuplicate = DatabaseFactory.getMmsDatabase(context).getThreadIdForMessage(messageID) > 0
|| DatabaseFactory.getSmsDatabase(context).getThreadIdForMessage(messageID) > 0
}
if (isDuplicate) { return }
if (message.body.isEmpty() && message.attachments.isEmpty() && message.quote == null) { return }
val userHexEncodedPublicKey = TextSecurePreferences.getLocalNumber(context)
val dataMessage = getDataMessage(message)

View File

@@ -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 "";
}
}

View File

@@ -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,32 @@ public abstract class Slide {
@NonNull
public Optional<String> getBody() {
return Optional.absent();
String attachmentString = context.getString(R.string.attachment);
if (MediaUtil.isAudio(attachment)) {
// A missing file name is the legacy way to determine if an audio attachment is
// a voice note vs. other arbitrary audio attachments.
if (attachment.isVoiceNote() || attachment.getFileName() == null ||
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

View File

@@ -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()) {

View File

@@ -226,7 +226,9 @@ public class MediaUtil {
}
public static boolean isImageType(String contentType) {
return (null != contentType) && contentType.startsWith("image/");
return (null != contentType)
&& contentType.startsWith("image/")
&& !contentType.contains("svg"); // Do not treat SVGs as regular images.
}
public static boolean isAudioType(String contentType) {