diff --git a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationActivity.java index 5b10d3286..72f35da1a 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationActivity.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationActivity.java @@ -460,8 +460,8 @@ public class ConversationActivity extends BriarActivity observeOnce(viewModel.getContactDisplayName(), this, name -> addConversationItem(h.accept(visitor))); } else { + // visitor also loads message text (if existing) addConversationItem(h.accept(visitor)); - loadMessageText(h.getId()); } }); } @@ -535,7 +535,7 @@ public class ConversationActivity extends BriarActivity PrivateMessageHeader h = new PrivateMessageHeader( message.getId(), message.getGroupId(), message.getTimestamp(), true, false, false, false, - emptyList()); + true, emptyList()); textCache.put(message.getId(), text); addConversationItem(h.accept(visitor)); } catch (DbException e) { diff --git a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationItemViewHolder.java b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationItemViewHolder.java index 93bcb6a45..9718d7e47 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationItemViewHolder.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationItemViewHolder.java @@ -34,9 +34,7 @@ abstract class ConversationItemViewHolder extends ViewHolder { @CallSuper void bind(ConversationItem item, ConversationListener listener) { - if (item.getText() == null) { - text.setText("\u2026"); - } else { + if (item.getText() != null) { text.setText(trim(item.getText())); } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationVisitor.java b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationVisitor.java index 52578c822..950afe7c0 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationVisitor.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationVisitor.java @@ -52,8 +52,10 @@ class ConversationVisitor implements item = new ConversationMessageItem( R.layout.list_item_conversation_msg_in, h); } - String text = textCache.getText(h.getId()); - if (text != null) item.setText(text); + if (h.hasText()) { + String text = textCache.getText(h.getId()); + if (text != null) item.setText(text); + } return item; } diff --git a/briar-api/src/main/java/org/briarproject/briar/api/messaging/PrivateMessageHeader.java b/briar-api/src/main/java/org/briarproject/briar/api/messaging/PrivateMessageHeader.java index 5ad19f729..2faddbc77 100644 --- a/briar-api/src/main/java/org/briarproject/briar/api/messaging/PrivateMessageHeader.java +++ b/briar-api/src/main/java/org/briarproject/briar/api/messaging/PrivateMessageHeader.java @@ -14,15 +14,21 @@ import javax.annotation.concurrent.Immutable; @NotNullByDefault public class PrivateMessageHeader extends ConversationMessageHeader { + private final boolean hasText; private final List attachmentHeaders; public PrivateMessageHeader(MessageId id, GroupId groupId, long timestamp, boolean local, boolean read, boolean sent, boolean seen, - List attachmentHeaders) { + boolean hasText, List attachmentHeaders) { super(id, groupId, timestamp, local, read, sent, seen); + this.hasText = hasText; this.attachmentHeaders = attachmentHeaders; } + public boolean hasText() { + return hasText; + } + public List getAttachmentHeaders() { return attachmentHeaders; } diff --git a/briar-core/src/main/java/org/briarproject/briar/messaging/MessagingManagerImpl.java b/briar-core/src/main/java/org/briarproject/briar/messaging/MessagingManagerImpl.java index 42d6f1e70..da253368c 100644 --- a/briar-core/src/main/java/org/briarproject/briar/messaging/MessagingManagerImpl.java +++ b/briar-core/src/main/java/org/briarproject/briar/messaging/MessagingManagerImpl.java @@ -122,7 +122,7 @@ class MessagingManagerImpl extends ConversationClientImpl boolean read = meta.getBoolean(MSG_KEY_READ); PrivateMessageHeader header = new PrivateMessageHeader(m.getId(), groupId, timestamp, local, - read, false, false, emptyList()); + read, false, false, true, emptyList()); ContactId contactId = getContactId(txn, groupId); PrivateMessageReceivedEvent event = new PrivateMessageReceivedEvent(header, contactId); @@ -217,7 +217,7 @@ class MessagingManagerImpl extends ConversationClientImpl boolean local = meta.getBoolean("local"); boolean read = meta.getBoolean("read"); headers.add(new PrivateMessageHeader(id, g, timestamp, local, - read, s.isSent(), s.isSeen(), emptyList())); + read, s.isSent(), s.isSeen(), true, emptyList())); } catch (FormatException e) { throw new DbException(e); } diff --git a/briar-headless/src/test/java/org/briarproject/briar/headless/event/WebSocketControllerTest.kt b/briar-headless/src/test/java/org/briarproject/briar/headless/event/WebSocketControllerTest.kt index 63aad8748..f658341d1 100644 --- a/briar-headless/src/test/java/org/briarproject/briar/headless/event/WebSocketControllerTest.kt +++ b/briar-headless/src/test/java/org/briarproject/briar/headless/event/WebSocketControllerTest.kt @@ -28,7 +28,17 @@ internal class WebSocketControllerTest : ControllerTest() { private val controller = WebSocketControllerImpl(ImmediateExecutor()) private val header = - PrivateMessageHeader(message.id, group.id, timestamp, true, true, true, true, emptyList()) + PrivateMessageHeader( + message.id, + group.id, + timestamp, + true, + true, + true, + true, + true, + emptyList() + ) private val event = PrivateMessageReceivedEvent(header, contact.id) private val outputEvent = OutputEvent(EVENT_CONVERSATION_MESSAGE, event.output(text)) diff --git a/briar-headless/src/test/java/org/briarproject/briar/headless/messaging/MessagingControllerImplTest.kt b/briar-headless/src/test/java/org/briarproject/briar/headless/messaging/MessagingControllerImplTest.kt index d27610c17..2eefdbf70 100644 --- a/briar-headless/src/test/java/org/briarproject/briar/headless/messaging/MessagingControllerImplTest.kt +++ b/briar-headless/src/test/java/org/briarproject/briar/headless/messaging/MessagingControllerImplTest.kt @@ -50,7 +50,17 @@ internal class MessagingControllerImplTest : ControllerTest() { ) private val header = - PrivateMessageHeader(message.id, group.id, timestamp, true, true, true, true, emptyList()) + PrivateMessageHeader( + message.id, + group.id, + timestamp, + true, + true, + true, + true, + true, + emptyList() + ) private val sessionId = SessionId(getRandomId()) private val privateMessage = PrivateMessage(message)