do not show fallback in embedded message
This commit is contained in:
parent
acfcde8416
commit
340bf45095
|
@ -16,6 +16,9 @@ public class MessageEmbedded {
|
||||||
|
|
||||||
public Long latestVersion;
|
public Long latestVersion;
|
||||||
|
|
||||||
|
public int inReplyToFallbackStart;
|
||||||
|
public int inReplyToFallbackEnd;
|
||||||
|
|
||||||
@Relation(
|
@Relation(
|
||||||
entity = MessageContentEntity.class,
|
entity = MessageContentEntity.class,
|
||||||
parentColumn = "latestVersion",
|
parentColumn = "latestVersion",
|
||||||
|
|
|
@ -2,7 +2,6 @@ package im.conversations.android.database.model;
|
||||||
|
|
||||||
import androidx.room.Relation;
|
import androidx.room.Relation;
|
||||||
import com.google.common.base.Objects;
|
import com.google.common.base.Objects;
|
||||||
import com.google.common.base.Strings;
|
|
||||||
import com.google.common.collect.Collections2;
|
import com.google.common.collect.Collections2;
|
||||||
import com.google.common.collect.ImmutableSortedSet;
|
import com.google.common.collect.ImmutableSortedSet;
|
||||||
import com.google.common.collect.Iterables;
|
import com.google.common.collect.Iterables;
|
||||||
|
@ -13,6 +12,7 @@ import im.conversations.android.database.entity.MessageContentEntity;
|
||||||
import im.conversations.android.database.entity.MessageEntity;
|
import im.conversations.android.database.entity.MessageEntity;
|
||||||
import im.conversations.android.database.entity.MessageReactionEntity;
|
import im.conversations.android.database.entity.MessageReactionEntity;
|
||||||
import im.conversations.android.database.entity.MessageStateEntity;
|
import im.conversations.android.database.entity.MessageStateEntity;
|
||||||
|
import im.conversations.android.util.TextContents;
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
@ -97,18 +97,11 @@ public final class MessageWithContentReactions
|
||||||
}
|
}
|
||||||
|
|
||||||
public String textContent() {
|
public String textContent() {
|
||||||
final var textContent =
|
return TextContents.toText(
|
||||||
Iterables.getFirst(
|
this.contents,
|
||||||
Iterables.filter(this.contents, c -> c.type == PartType.TEXT), null);
|
inReplyToMessageEntityId != null,
|
||||||
final var body = Strings.nullToEmpty(textContent == null ? null : textContent.body);
|
inReplyToFallbackStart,
|
||||||
;
|
inReplyToFallbackEnd);
|
||||||
if (inReplyToMessageEntityId != null
|
|
||||||
&& inReplyToFallbackEnd > inReplyToFallbackStart
|
|
||||||
&& inReplyToFallbackEnd <= body.length()) {
|
|
||||||
return body.substring(0, inReplyToFallbackStart) + body.substring(inReplyToFallbackEnd);
|
|
||||||
} else {
|
|
||||||
return body;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean hasPreview() {
|
public boolean hasPreview() {
|
||||||
|
@ -143,8 +136,11 @@ public final class MessageWithContentReactions
|
||||||
if (inReplyTo == null) {
|
if (inReplyTo == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
final var content = Iterables.getFirst(inReplyTo.contents, null);
|
return TextContents.toText(
|
||||||
return Strings.nullToEmpty(content == null ? null : content.body);
|
inReplyTo.contents,
|
||||||
|
true,
|
||||||
|
inReplyTo.inReplyToFallbackStart,
|
||||||
|
inReplyTo.inReplyToFallbackEnd);
|
||||||
}
|
}
|
||||||
|
|
||||||
public AddressWithName getAddressWithName() {
|
public AddressWithName getAddressWithName() {
|
||||||
|
|
|
@ -0,0 +1,31 @@
|
||||||
|
package im.conversations.android.util;
|
||||||
|
|
||||||
|
import com.google.common.base.Strings;
|
||||||
|
import com.google.common.collect.Collections2;
|
||||||
|
import com.google.common.collect.Iterables;
|
||||||
|
import im.conversations.android.database.model.MessageContent;
|
||||||
|
import im.conversations.android.database.model.PartType;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public final class TextContents {
|
||||||
|
|
||||||
|
private TextContents() {}
|
||||||
|
|
||||||
|
public static String toText(
|
||||||
|
final List<MessageContent> messageContents,
|
||||||
|
final boolean removeFallback,
|
||||||
|
final int inReplyToFallbackStart,
|
||||||
|
final int inReplyToFallbackEnd) {
|
||||||
|
final var textContents = Collections2.filter(messageContents, c -> c.type == PartType.TEXT);
|
||||||
|
if (textContents.size() == 1 && removeFallback) {
|
||||||
|
final String body = Strings.nullToEmpty(Iterables.getOnlyElement(textContents).body);
|
||||||
|
if (inReplyToFallbackEnd > inReplyToFallbackStart
|
||||||
|
&& inReplyToFallbackEnd <= body.length()) {
|
||||||
|
return body.substring(0, inReplyToFallbackStart)
|
||||||
|
+ body.substring(inReplyToFallbackEnd);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
final var anyTextContent = Iterables.getFirst(textContents, null);
|
||||||
|
return anyTextContent == null ? null : anyTextContent.body;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue