Refactor PrivateMessageHeader to ConversationMessageHeader base-class

This is preparation for adding attachments to private messages
This commit is contained in:
Torsten Grote
2018-10-30 11:42:30 -03:00
parent 391732b239
commit e3abff5ad8
66 changed files with 310 additions and 242 deletions

View File

@@ -43,7 +43,7 @@ import org.briarproject.briar.api.feed.FeedManager;
import org.briarproject.briar.api.forum.ForumManager; import org.briarproject.briar.api.forum.ForumManager;
import org.briarproject.briar.api.forum.ForumSharingManager; import org.briarproject.briar.api.forum.ForumSharingManager;
import org.briarproject.briar.api.introduction.IntroductionManager; import org.briarproject.briar.api.introduction.IntroductionManager;
import org.briarproject.briar.api.messaging.ConversationManager; import org.briarproject.briar.api.conversation.ConversationManager;
import org.briarproject.briar.api.messaging.MessagingManager; import org.briarproject.briar.api.messaging.MessagingManager;
import org.briarproject.briar.api.messaging.PrivateMessageFactory; import org.briarproject.briar.api.messaging.PrivateMessageFactory;
import org.briarproject.briar.api.privategroup.GroupMessageFactory; import org.briarproject.briar.api.privategroup.GroupMessageFactory;

View File

@@ -36,7 +36,7 @@ import org.briarproject.briar.android.keyagreement.ContactExchangeActivity;
import org.briarproject.briar.android.view.BriarRecyclerView; import org.briarproject.briar.android.view.BriarRecyclerView;
import org.briarproject.briar.api.android.AndroidNotificationManager; import org.briarproject.briar.api.android.AndroidNotificationManager;
import org.briarproject.briar.api.client.MessageTracker.GroupCount; import org.briarproject.briar.api.client.MessageTracker.GroupCount;
import org.briarproject.briar.api.messaging.ConversationManager; import org.briarproject.briar.api.conversation.ConversationManager;
import org.briarproject.briar.api.messaging.PrivateMessageHeader; import org.briarproject.briar.api.messaging.PrivateMessageHeader;
import org.briarproject.briar.api.messaging.event.PrivateMessageReceivedEvent; import org.briarproject.briar.api.messaging.event.PrivateMessageReceivedEvent;

View File

@@ -63,15 +63,16 @@ import org.briarproject.briar.api.android.AndroidNotificationManager;
import org.briarproject.briar.api.blog.BlogSharingManager; import org.briarproject.briar.api.blog.BlogSharingManager;
import org.briarproject.briar.api.client.ProtocolStateException; import org.briarproject.briar.api.client.ProtocolStateException;
import org.briarproject.briar.api.client.SessionId; import org.briarproject.briar.api.client.SessionId;
import org.briarproject.briar.api.conversation.ConversationMessageHeader;
import org.briarproject.briar.api.forum.ForumSharingManager; import org.briarproject.briar.api.forum.ForumSharingManager;
import org.briarproject.briar.api.introduction.IntroductionManager; import org.briarproject.briar.api.introduction.IntroductionManager;
import org.briarproject.briar.api.messaging.ConversationManager; import org.briarproject.briar.api.conversation.ConversationManager;
import org.briarproject.briar.api.messaging.MessagingManager; import org.briarproject.briar.api.messaging.MessagingManager;
import org.briarproject.briar.api.messaging.PrivateMessage; import org.briarproject.briar.api.messaging.PrivateMessage;
import org.briarproject.briar.api.messaging.PrivateMessageFactory; import org.briarproject.briar.api.messaging.PrivateMessageFactory;
import org.briarproject.briar.api.messaging.PrivateMessageHeader; import org.briarproject.briar.api.messaging.PrivateMessageHeader;
import org.briarproject.briar.api.messaging.PrivateRequest; import org.briarproject.briar.api.conversation.ConversationRequest;
import org.briarproject.briar.api.messaging.PrivateResponse; import org.briarproject.briar.api.conversation.ConversationResponse;
import org.briarproject.briar.api.messaging.event.PrivateMessageReceivedEvent; import org.briarproject.briar.api.messaging.event.PrivateMessageReceivedEvent;
import org.briarproject.briar.api.privategroup.invitation.GroupInvitationManager; import org.briarproject.briar.api.privategroup.invitation.GroupInvitationManager;
@@ -326,7 +327,7 @@ public class ConversationActivity extends BriarActivity
runOnDbThread(() -> { runOnDbThread(() -> {
try { try {
long start = now(); long start = now();
Collection<PrivateMessageHeader> headers = Collection<ConversationMessageHeader> headers =
conversationManager.getMessageHeaders(contactId); conversationManager.getMessageHeaders(contactId);
logDuration(LOG, "Loading messages", start); logDuration(LOG, "Loading messages", start);
displayMessages(revision, headers); displayMessages(revision, headers);
@@ -339,7 +340,7 @@ public class ConversationActivity extends BriarActivity
} }
private void displayMessages(int revision, private void displayMessages(int revision,
Collection<PrivateMessageHeader> headers) { Collection<ConversationMessageHeader> headers) {
runOnUiThreadUnlessDestroyed(() -> { runOnUiThreadUnlessDestroyed(() -> {
if (revision == adapter.getRevision()) { if (revision == adapter.getRevision()) {
adapter.incrementRevision(); adapter.incrementRevision();
@@ -363,9 +364,10 @@ public class ConversationActivity extends BriarActivity
*/ */
@SuppressWarnings("ConstantConditions") @SuppressWarnings("ConstantConditions")
private List<ConversationItem> createItems( private List<ConversationItem> createItems(
Collection<PrivateMessageHeader> headers) { Collection<ConversationMessageHeader> headers) {
List<ConversationItem> items = new ArrayList<>(headers.size()); List<ConversationItem> items = new ArrayList<>(headers.size());
for (PrivateMessageHeader h : headers) items.add(h.accept(visitor)); for (ConversationMessageHeader h : headers)
items.add(h.accept(visitor));
return items; return items;
} }
@@ -449,9 +451,10 @@ public class ConversationActivity extends BriarActivity
}); });
} }
private void onNewPrivateMessage(PrivateMessageHeader h) { private void onNewPrivateMessage(ConversationMessageHeader h) {
runOnUiThreadUnlessDestroyed(() -> { runOnUiThreadUnlessDestroyed(() -> {
if (h instanceof PrivateRequest || h instanceof PrivateResponse) { if (h instanceof ConversationRequest ||
h instanceof ConversationResponse) {
// contact name might not have been loaded // contact name might not have been loaded
observeOnce(viewModel.getContactDisplayName(), this, observeOnce(viewModel.getContactDisplayName(), this,
name -> addConversationItem(h.accept(visitor))); name -> addConversationItem(h.accept(visitor)));

View File

@@ -6,7 +6,7 @@ import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.bramble.api.sync.GroupId; import org.briarproject.bramble.api.sync.GroupId;
import org.briarproject.bramble.api.sync.MessageId; import org.briarproject.bramble.api.sync.MessageId;
import org.briarproject.briar.R; import org.briarproject.briar.R;
import org.briarproject.briar.api.messaging.PrivateResponse; import org.briarproject.briar.api.conversation.ConversationResponse;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import javax.annotation.concurrent.NotThreadSafe; import javax.annotation.concurrent.NotThreadSafe;
@@ -24,7 +24,7 @@ class ConversationNoticeInItem extends ConversationItem {
this.msgText = msgText; this.msgText = msgText;
} }
ConversationNoticeInItem(String text, PrivateResponse r) { ConversationNoticeInItem(String text, ConversationResponse r) {
super(r.getId(), r.getGroupId(), text, r.getTimestamp(), r.isRead()); super(r.getId(), r.getGroupId(), text, r.getTimestamp(), r.isRead());
this.msgText = null; this.msgText = null;
} }

View File

@@ -4,8 +4,8 @@ import android.support.annotation.LayoutRes;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.briar.R; import org.briarproject.briar.R;
import org.briarproject.briar.api.messaging.PrivateRequest; import org.briarproject.briar.api.conversation.ConversationRequest;
import org.briarproject.briar.api.messaging.PrivateResponse; import org.briarproject.briar.api.conversation.ConversationResponse;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import javax.annotation.concurrent.NotThreadSafe; import javax.annotation.concurrent.NotThreadSafe;
@@ -17,13 +17,13 @@ class ConversationNoticeOutItem extends ConversationOutItem {
@Nullable @Nullable
private final String msgText; private final String msgText;
ConversationNoticeOutItem(String text, PrivateRequest r) { ConversationNoticeOutItem(String text, ConversationRequest r) {
super(r.getId(), r.getGroupId(), text, r.getTimestamp(), r.isSent(), super(r.getId(), r.getGroupId(), text, r.getTimestamp(), r.isSent(),
r.isSeen()); r.isSeen());
this.msgText = r.getText(); this.msgText = r.getText();
} }
ConversationNoticeOutItem(String text, PrivateResponse r) { ConversationNoticeOutItem(String text, ConversationResponse r) {
super(r.getId(), r.getGroupId(), text, r.getTimestamp(), r.isSent(), super(r.getId(), r.getGroupId(), text, r.getTimestamp(), r.isSent(),
r.isSeen()); r.isSeen());
this.msgText = null; this.msgText = null;

View File

@@ -6,7 +6,7 @@ import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.bramble.api.sync.GroupId; import org.briarproject.bramble.api.sync.GroupId;
import org.briarproject.briar.R; import org.briarproject.briar.R;
import org.briarproject.briar.api.client.SessionId; import org.briarproject.briar.api.client.SessionId;
import org.briarproject.briar.api.messaging.PrivateRequest; import org.briarproject.briar.api.conversation.ConversationRequest;
import org.briarproject.briar.api.sharing.InvitationRequest; import org.briarproject.briar.api.sharing.InvitationRequest;
import org.briarproject.briar.api.sharing.Shareable; import org.briarproject.briar.api.sharing.Shareable;
@@ -26,7 +26,7 @@ class ConversationRequestItem extends ConversationNoticeInItem {
private final boolean canBeOpened; private final boolean canBeOpened;
private boolean answered; private boolean answered;
ConversationRequestItem(String text, RequestType type, PrivateRequest r) { ConversationRequestItem(String text, RequestType type, ConversationRequest r) {
super(r.getId(), r.getGroupId(), text, r.getText(), super(r.getId(), r.getGroupId(), text, r.getText(),
r.getTimestamp(), r.isRead()); r.getTimestamp(), r.isRead());
this.requestType = type; this.requestType = type;

View File

@@ -14,7 +14,7 @@ import org.briarproject.briar.api.forum.ForumInvitationResponse;
import org.briarproject.briar.api.introduction.IntroductionRequest; import org.briarproject.briar.api.introduction.IntroductionRequest;
import org.briarproject.briar.api.introduction.IntroductionResponse; import org.briarproject.briar.api.introduction.IntroductionResponse;
import org.briarproject.briar.api.messaging.PrivateMessageHeader; import org.briarproject.briar.api.messaging.PrivateMessageHeader;
import org.briarproject.briar.api.messaging.PrivateMessageVisitor; import org.briarproject.briar.api.conversation.ConversationMessageVisitor;
import org.briarproject.briar.api.privategroup.invitation.GroupInvitationRequest; import org.briarproject.briar.api.privategroup.invitation.GroupInvitationRequest;
import org.briarproject.briar.api.privategroup.invitation.GroupInvitationResponse; import org.briarproject.briar.api.privategroup.invitation.GroupInvitationResponse;
@@ -28,7 +28,8 @@ import static org.briarproject.briar.android.util.UiUtils.getContactDisplayName;
@UiThread @UiThread
@NotNullByDefault @NotNullByDefault
class ConversationVisitor implements PrivateMessageVisitor<ConversationItem> { class ConversationVisitor implements
ConversationMessageVisitor<ConversationItem> {
private final Context ctx; private final Context ctx;
private final TextCache textCache; private final TextCache textCache;

View File

@@ -20,7 +20,7 @@ import org.briarproject.briar.android.contact.ContactListItem;
import org.briarproject.briar.android.fragment.BaseFragment; import org.briarproject.briar.android.fragment.BaseFragment;
import org.briarproject.briar.android.view.BriarRecyclerView; import org.briarproject.briar.android.view.BriarRecyclerView;
import org.briarproject.briar.api.client.MessageTracker.GroupCount; import org.briarproject.briar.api.client.MessageTracker.GroupCount;
import org.briarproject.briar.api.messaging.ConversationManager; import org.briarproject.briar.api.conversation.ConversationManager;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;

View File

@@ -14,7 +14,7 @@ import org.briarproject.bramble.api.system.Clock;
import org.briarproject.briar.android.contactselection.ContactSelectorControllerImpl; import org.briarproject.briar.android.contactselection.ContactSelectorControllerImpl;
import org.briarproject.briar.android.controller.handler.ExceptionHandler; import org.briarproject.briar.android.controller.handler.ExceptionHandler;
import org.briarproject.briar.api.blog.BlogSharingManager; import org.briarproject.briar.api.blog.BlogSharingManager;
import org.briarproject.briar.api.messaging.ConversationManager; import org.briarproject.briar.api.conversation.ConversationManager;
import java.util.Collection; import java.util.Collection;
import java.util.concurrent.Executor; import java.util.concurrent.Executor;

View File

@@ -14,7 +14,7 @@ import org.briarproject.bramble.api.system.Clock;
import org.briarproject.briar.android.contactselection.ContactSelectorControllerImpl; import org.briarproject.briar.android.contactselection.ContactSelectorControllerImpl;
import org.briarproject.briar.android.controller.handler.ExceptionHandler; import org.briarproject.briar.android.controller.handler.ExceptionHandler;
import org.briarproject.briar.api.forum.ForumSharingManager; import org.briarproject.briar.api.forum.ForumSharingManager;
import org.briarproject.briar.api.messaging.ConversationManager; import org.briarproject.briar.api.conversation.ConversationManager;
import java.util.Collection; import java.util.Collection;
import java.util.concurrent.Executor; import java.util.concurrent.Executor;

View File

@@ -4,7 +4,7 @@ import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.bramble.api.sync.GroupId; import org.briarproject.bramble.api.sync.GroupId;
import org.briarproject.bramble.api.sync.MessageId; import org.briarproject.bramble.api.sync.MessageId;
import org.briarproject.briar.api.client.SessionId; import org.briarproject.briar.api.client.SessionId;
import org.briarproject.briar.api.messaging.PrivateMessageVisitor; import org.briarproject.briar.api.conversation.ConversationMessageVisitor;
import org.briarproject.briar.api.sharing.InvitationRequest; import org.briarproject.briar.api.sharing.InvitationRequest;
import javax.annotation.Nullable; import javax.annotation.Nullable;
@@ -21,7 +21,7 @@ public class BlogInvitationRequest extends InvitationRequest<Blog> {
} }
@Override @Override
public <T> T accept(PrivateMessageVisitor<T> v) { public <T> T accept(ConversationMessageVisitor<T> v) {
return v.visitBlogInvitationRequest(this); return v.visitBlogInvitationRequest(this);
} }
} }

View File

@@ -4,7 +4,7 @@ import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.bramble.api.sync.GroupId; import org.briarproject.bramble.api.sync.GroupId;
import org.briarproject.bramble.api.sync.MessageId; import org.briarproject.bramble.api.sync.MessageId;
import org.briarproject.briar.api.client.SessionId; import org.briarproject.briar.api.client.SessionId;
import org.briarproject.briar.api.messaging.PrivateMessageVisitor; import org.briarproject.briar.api.conversation.ConversationMessageVisitor;
import org.briarproject.briar.api.sharing.InvitationResponse; import org.briarproject.briar.api.sharing.InvitationResponse;
@NotNullByDefault @NotNullByDefault
@@ -18,7 +18,7 @@ public class BlogInvitationResponse extends InvitationResponse {
} }
@Override @Override
public <T> T accept(PrivateMessageVisitor<T> v) { public <T> T accept(ConversationMessageVisitor<T> v) {
return v.visitBlogInvitationResponse(this); return v.visitBlogInvitationResponse(this);
} }
} }

View File

@@ -3,17 +3,17 @@ package org.briarproject.briar.api.blog.event;
import org.briarproject.bramble.api.contact.ContactId; import org.briarproject.bramble.api.contact.ContactId;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.briar.api.blog.Blog; import org.briarproject.briar.api.blog.Blog;
import org.briarproject.briar.api.messaging.PrivateRequest; import org.briarproject.briar.api.conversation.ConversationRequest;
import org.briarproject.briar.api.messaging.event.PrivateMessageReceivedEvent; import org.briarproject.briar.api.conversation.event.ConversationMessageReceivedEvent;
import javax.annotation.concurrent.Immutable; import javax.annotation.concurrent.Immutable;
@Immutable @Immutable
@NotNullByDefault @NotNullByDefault
public class BlogInvitationRequestReceivedEvent extends public class BlogInvitationRequestReceivedEvent extends
PrivateMessageReceivedEvent<PrivateRequest<Blog>> { ConversationMessageReceivedEvent<ConversationRequest<Blog>> {
public BlogInvitationRequestReceivedEvent(PrivateRequest<Blog> request, public BlogInvitationRequestReceivedEvent(ConversationRequest<Blog> request,
ContactId contactId) { ContactId contactId) {
super(request, contactId); super(request, contactId);
} }

View File

@@ -3,14 +3,14 @@ package org.briarproject.briar.api.blog.event;
import org.briarproject.bramble.api.contact.ContactId; import org.briarproject.bramble.api.contact.ContactId;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.briar.api.blog.BlogInvitationResponse; import org.briarproject.briar.api.blog.BlogInvitationResponse;
import org.briarproject.briar.api.messaging.event.PrivateMessageReceivedEvent; import org.briarproject.briar.api.conversation.event.ConversationMessageReceivedEvent;
import javax.annotation.concurrent.Immutable; import javax.annotation.concurrent.Immutable;
@Immutable @Immutable
@NotNullByDefault @NotNullByDefault
public class BlogInvitationResponseReceivedEvent public class BlogInvitationResponseReceivedEvent
extends PrivateMessageReceivedEvent<BlogInvitationResponse> { extends ConversationMessageReceivedEvent<BlogInvitationResponse> {
public BlogInvitationResponseReceivedEvent(BlogInvitationResponse response, public BlogInvitationResponseReceivedEvent(BlogInvitationResponse response,
ContactId contactId) { ContactId contactId) {

View File

@@ -1,4 +1,4 @@
package org.briarproject.briar.api.messaging; package org.briarproject.briar.api.conversation;
import org.briarproject.bramble.api.contact.Contact; import org.briarproject.bramble.api.contact.Contact;
import org.briarproject.bramble.api.contact.ContactId; import org.briarproject.bramble.api.contact.ContactId;
@@ -9,6 +9,7 @@ import org.briarproject.bramble.api.sync.Group;
import org.briarproject.bramble.api.sync.GroupId; import org.briarproject.bramble.api.sync.GroupId;
import org.briarproject.bramble.api.sync.MessageId; import org.briarproject.bramble.api.sync.MessageId;
import org.briarproject.briar.api.client.MessageTracker.GroupCount; import org.briarproject.briar.api.client.MessageTracker.GroupCount;
import org.briarproject.briar.api.messaging.MessagingManager;
import java.util.Collection; import java.util.Collection;
@@ -27,7 +28,7 @@ public interface ConversationManager {
* Only {@link MessagingManager} returns only headers. * Only {@link MessagingManager} returns only headers.
* The others also return the message text. * The others also return the message text.
*/ */
Collection<PrivateMessageHeader> getMessageHeaders(ContactId c) Collection<ConversationMessageHeader> getMessageHeaders(ContactId c)
throws DbException; throws DbException;
/** /**
@@ -40,7 +41,7 @@ public interface ConversationManager {
Group getContactGroup(Contact c); Group getContactGroup(Contact c);
Collection<PrivateMessageHeader> getMessageHeaders(Transaction txn, Collection<ConversationMessageHeader> getMessageHeaders(Transaction txn,
ContactId contactId) throws DbException; ContactId contactId) throws DbException;
GroupCount getGroupCount(Transaction txn, ContactId c) GroupCount getGroupCount(Transaction txn, ContactId c)

View File

@@ -0,0 +1,58 @@
package org.briarproject.briar.api.conversation;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.bramble.api.sync.GroupId;
import org.briarproject.bramble.api.sync.MessageId;
import javax.annotation.concurrent.Immutable;
@Immutable
@NotNullByDefault
public abstract class ConversationMessageHeader {
private final MessageId id;
private final GroupId groupId;
private final long timestamp;
private final boolean local, sent, seen, read;
public ConversationMessageHeader(MessageId id, GroupId groupId, long timestamp,
boolean local, boolean read, boolean sent, boolean seen) {
this.id = id;
this.groupId = groupId;
this.timestamp = timestamp;
this.local = local;
this.sent = sent;
this.seen = seen;
this.read = read;
}
public MessageId getId() {
return id;
}
public GroupId getGroupId() {
return groupId;
}
public long getTimestamp() {
return timestamp;
}
public boolean isLocal() {
return local;
}
public boolean isSent() {
return sent;
}
public boolean isSeen() {
return seen;
}
public boolean isRead() {
return read;
}
public abstract <T> T accept(ConversationMessageVisitor<T> v);
}

View File

@@ -1,4 +1,4 @@
package org.briarproject.briar.api.messaging; package org.briarproject.briar.api.conversation;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.briar.api.blog.BlogInvitationRequest; import org.briarproject.briar.api.blog.BlogInvitationRequest;
@@ -7,11 +7,12 @@ import org.briarproject.briar.api.forum.ForumInvitationRequest;
import org.briarproject.briar.api.forum.ForumInvitationResponse; import org.briarproject.briar.api.forum.ForumInvitationResponse;
import org.briarproject.briar.api.introduction.IntroductionRequest; import org.briarproject.briar.api.introduction.IntroductionRequest;
import org.briarproject.briar.api.introduction.IntroductionResponse; import org.briarproject.briar.api.introduction.IntroductionResponse;
import org.briarproject.briar.api.messaging.PrivateMessageHeader;
import org.briarproject.briar.api.privategroup.invitation.GroupInvitationRequest; import org.briarproject.briar.api.privategroup.invitation.GroupInvitationRequest;
import org.briarproject.briar.api.privategroup.invitation.GroupInvitationResponse; import org.briarproject.briar.api.privategroup.invitation.GroupInvitationResponse;
@NotNullByDefault @NotNullByDefault
public interface PrivateMessageVisitor<T> { public interface ConversationMessageVisitor<T> {
T visitPrivateMessageHeader(PrivateMessageHeader h); T visitPrivateMessageHeader(PrivateMessageHeader h);

View File

@@ -1,4 +1,4 @@
package org.briarproject.briar.api.messaging; package org.briarproject.briar.api.conversation;
import org.briarproject.bramble.api.Nameable; import org.briarproject.bramble.api.Nameable;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
@@ -11,7 +11,8 @@ import javax.annotation.concurrent.Immutable;
@Immutable @Immutable
@NotNullByDefault @NotNullByDefault
public class PrivateRequest<N extends Nameable> extends PrivateMessageHeader { public abstract class ConversationRequest<N extends Nameable>
extends ConversationMessageHeader {
private final SessionId sessionId; private final SessionId sessionId;
private final N nameable; private final N nameable;
@@ -19,7 +20,7 @@ public class PrivateRequest<N extends Nameable> extends PrivateMessageHeader {
private final String text; private final String text;
private final boolean answered; private final boolean answered;
public PrivateRequest(MessageId messageId, GroupId groupId, long time, public ConversationRequest(MessageId messageId, GroupId groupId, long time,
boolean local, boolean sent, boolean seen, boolean read, boolean local, boolean sent, boolean seen, boolean read,
SessionId sessionId, N nameable, @Nullable String text, SessionId sessionId, N nameable, @Nullable String text,
boolean answered) { boolean answered) {
@@ -50,4 +51,5 @@ public class PrivateRequest<N extends Nameable> extends PrivateMessageHeader {
public boolean wasAnswered() { public boolean wasAnswered() {
return answered; return answered;
} }
} }

View File

@@ -1,4 +1,4 @@
package org.briarproject.briar.api.messaging; package org.briarproject.briar.api.conversation;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.bramble.api.sync.GroupId; import org.briarproject.bramble.api.sync.GroupId;
@@ -9,12 +9,12 @@ import javax.annotation.concurrent.Immutable;
@Immutable @Immutable
@NotNullByDefault @NotNullByDefault
public abstract class PrivateResponse extends PrivateMessageHeader { public abstract class ConversationResponse extends ConversationMessageHeader {
private final SessionId sessionId; private final SessionId sessionId;
private final boolean accepted; private final boolean accepted;
public PrivateResponse(MessageId id, GroupId groupId, long time, public ConversationResponse(MessageId id, GroupId groupId, long time,
boolean local, boolean sent, boolean seen, boolean read, boolean local, boolean sent, boolean seen, boolean read,
SessionId sessionId, boolean accepted) { SessionId sessionId, boolean accepted) {
super(id, groupId, time, local, sent, seen, read); super(id, groupId, time, local, sent, seen, read);

View File

@@ -0,0 +1,33 @@
package org.briarproject.briar.api.conversation.event;
import org.briarproject.bramble.api.contact.ContactId;
import org.briarproject.bramble.api.event.Event;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.briar.api.conversation.ConversationMessageHeader;
import javax.annotation.concurrent.Immutable;
/**
* An event that is broadcast when a new conversation message is received.
*/
@Immutable
@NotNullByDefault
public class ConversationMessageReceivedEvent<H extends ConversationMessageHeader>
extends Event {
private final H messageHeader;
private final ContactId contactId;
public ConversationMessageReceivedEvent(H messageHeader, ContactId contactId) {
this.messageHeader = messageHeader;
this.contactId = contactId;
}
public H getMessageHeader() {
return messageHeader;
}
public ContactId getContactId() {
return contactId;
}
}

View File

@@ -4,7 +4,7 @@ import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.bramble.api.sync.GroupId; import org.briarproject.bramble.api.sync.GroupId;
import org.briarproject.bramble.api.sync.MessageId; import org.briarproject.bramble.api.sync.MessageId;
import org.briarproject.briar.api.client.SessionId; import org.briarproject.briar.api.client.SessionId;
import org.briarproject.briar.api.messaging.PrivateMessageVisitor; import org.briarproject.briar.api.conversation.ConversationMessageVisitor;
import org.briarproject.briar.api.sharing.InvitationRequest; import org.briarproject.briar.api.sharing.InvitationRequest;
import javax.annotation.Nullable; import javax.annotation.Nullable;
@@ -23,7 +23,7 @@ public class ForumInvitationRequest extends InvitationRequest<Forum> {
} }
@Override @Override
public <T> T accept(PrivateMessageVisitor<T> v) { public <T> T accept(ConversationMessageVisitor<T> v) {
return v.visitForumInvitationRequest(this); return v.visitForumInvitationRequest(this);
} }
} }

View File

@@ -4,7 +4,7 @@ import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.bramble.api.sync.GroupId; import org.briarproject.bramble.api.sync.GroupId;
import org.briarproject.bramble.api.sync.MessageId; import org.briarproject.bramble.api.sync.MessageId;
import org.briarproject.briar.api.client.SessionId; import org.briarproject.briar.api.client.SessionId;
import org.briarproject.briar.api.messaging.PrivateMessageVisitor; import org.briarproject.briar.api.conversation.ConversationMessageVisitor;
import org.briarproject.briar.api.sharing.InvitationResponse; import org.briarproject.briar.api.sharing.InvitationResponse;
import javax.annotation.concurrent.Immutable; import javax.annotation.concurrent.Immutable;
@@ -21,7 +21,7 @@ public class ForumInvitationResponse extends InvitationResponse {
} }
@Override @Override
public <T> T accept(PrivateMessageVisitor<T> v) { public <T> T accept(ConversationMessageVisitor<T> v) {
return v.visitForumInvitationResponse(this); return v.visitForumInvitationResponse(this);
} }
} }

View File

@@ -2,18 +2,18 @@ package org.briarproject.briar.api.forum.event;
import org.briarproject.bramble.api.contact.ContactId; import org.briarproject.bramble.api.contact.ContactId;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.briar.api.conversation.ConversationRequest;
import org.briarproject.briar.api.conversation.event.ConversationMessageReceivedEvent;
import org.briarproject.briar.api.forum.Forum; import org.briarproject.briar.api.forum.Forum;
import org.briarproject.briar.api.messaging.PrivateRequest;
import org.briarproject.briar.api.messaging.event.PrivateMessageReceivedEvent;
import javax.annotation.concurrent.Immutable; import javax.annotation.concurrent.Immutable;
@Immutable @Immutable
@NotNullByDefault @NotNullByDefault
public class ForumInvitationRequestReceivedEvent extends public class ForumInvitationRequestReceivedEvent extends
PrivateMessageReceivedEvent<PrivateRequest<Forum>> { ConversationMessageReceivedEvent<ConversationRequest<Forum>> {
public ForumInvitationRequestReceivedEvent(PrivateRequest<Forum> request, public ForumInvitationRequestReceivedEvent(ConversationRequest<Forum> request,
ContactId contactId) { ContactId contactId) {
super(request, contactId); super(request, contactId);
} }

View File

@@ -2,15 +2,15 @@ package org.briarproject.briar.api.forum.event;
import org.briarproject.bramble.api.contact.ContactId; import org.briarproject.bramble.api.contact.ContactId;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.briar.api.conversation.event.ConversationMessageReceivedEvent;
import org.briarproject.briar.api.forum.ForumInvitationResponse; import org.briarproject.briar.api.forum.ForumInvitationResponse;
import org.briarproject.briar.api.messaging.event.PrivateMessageReceivedEvent;
import javax.annotation.concurrent.Immutable; import javax.annotation.concurrent.Immutable;
@Immutable @Immutable
@NotNullByDefault @NotNullByDefault
public class ForumInvitationResponseReceivedEvent extends public class ForumInvitationResponseReceivedEvent extends
PrivateMessageReceivedEvent<ForumInvitationResponse> { ConversationMessageReceivedEvent<ForumInvitationResponse> {
public ForumInvitationResponseReceivedEvent( public ForumInvitationResponseReceivedEvent(
ForumInvitationResponse response, ContactId contactId) { ForumInvitationResponse response, ContactId contactId) {

View File

@@ -6,7 +6,7 @@ import org.briarproject.bramble.api.db.DbException;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.bramble.api.sync.ClientId; import org.briarproject.bramble.api.sync.ClientId;
import org.briarproject.briar.api.client.SessionId; import org.briarproject.briar.api.client.SessionId;
import org.briarproject.briar.api.messaging.ConversationManager.ConversationClient; import org.briarproject.briar.api.conversation.ConversationManager.ConversationClient;
import javax.annotation.Nullable; import javax.annotation.Nullable;

View File

@@ -6,15 +6,15 @@ import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.bramble.api.sync.GroupId; import org.briarproject.bramble.api.sync.GroupId;
import org.briarproject.bramble.api.sync.MessageId; import org.briarproject.bramble.api.sync.MessageId;
import org.briarproject.briar.api.client.SessionId; import org.briarproject.briar.api.client.SessionId;
import org.briarproject.briar.api.messaging.PrivateMessageVisitor; import org.briarproject.briar.api.conversation.ConversationMessageVisitor;
import org.briarproject.briar.api.messaging.PrivateRequest; import org.briarproject.briar.api.conversation.ConversationRequest;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import javax.annotation.concurrent.Immutable; import javax.annotation.concurrent.Immutable;
@Immutable @Immutable
@NotNullByDefault @NotNullByDefault
public class IntroductionRequest extends PrivateRequest<Author> { public class IntroductionRequest extends ConversationRequest<Author> {
private final AuthorInfo authorInfo; private final AuthorInfo authorInfo;
@@ -37,7 +37,7 @@ public class IntroductionRequest extends PrivateRequest<Author> {
} }
@Override @Override
public <T> T accept(PrivateMessageVisitor<T> v) { public <T> T accept(ConversationMessageVisitor<T> v) {
return v.visitIntroductionRequest(this); return v.visitIntroductionRequest(this);
} }
} }

View File

@@ -6,8 +6,8 @@ import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.bramble.api.sync.GroupId; import org.briarproject.bramble.api.sync.GroupId;
import org.briarproject.bramble.api.sync.MessageId; import org.briarproject.bramble.api.sync.MessageId;
import org.briarproject.briar.api.client.SessionId; import org.briarproject.briar.api.client.SessionId;
import org.briarproject.briar.api.messaging.PrivateMessageVisitor; import org.briarproject.briar.api.conversation.ConversationMessageVisitor;
import org.briarproject.briar.api.messaging.PrivateResponse; import org.briarproject.briar.api.conversation.ConversationResponse;
import javax.annotation.concurrent.Immutable; import javax.annotation.concurrent.Immutable;
@@ -15,7 +15,7 @@ import static org.briarproject.briar.api.introduction.Role.INTRODUCER;
@Immutable @Immutable
@NotNullByDefault @NotNullByDefault
public class IntroductionResponse extends PrivateResponse { public class IntroductionResponse extends ConversationResponse {
private final Author introducedAuthor; private final Author introducedAuthor;
private final AuthorInfo introducedAuthorInfo; private final AuthorInfo introducedAuthorInfo;
@@ -45,7 +45,7 @@ public class IntroductionResponse extends PrivateResponse {
} }
@Override @Override
public <T> T accept(PrivateMessageVisitor<T> v) { public <T> T accept(ConversationMessageVisitor<T> v) {
return v.visitIntroductionResponse(this); return v.visitIntroductionResponse(this);
} }
} }

View File

@@ -2,15 +2,15 @@ package org.briarproject.briar.api.introduction.event;
import org.briarproject.bramble.api.contact.ContactId; import org.briarproject.bramble.api.contact.ContactId;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.briar.api.conversation.event.ConversationMessageReceivedEvent;
import org.briarproject.briar.api.introduction.IntroductionRequest; import org.briarproject.briar.api.introduction.IntroductionRequest;
import org.briarproject.briar.api.messaging.event.PrivateMessageReceivedEvent;
import javax.annotation.concurrent.Immutable; import javax.annotation.concurrent.Immutable;
@Immutable @Immutable
@NotNullByDefault @NotNullByDefault
public class IntroductionRequestReceivedEvent extends public class IntroductionRequestReceivedEvent
PrivateMessageReceivedEvent<IntroductionRequest> { extends ConversationMessageReceivedEvent<IntroductionRequest> {
public IntroductionRequestReceivedEvent( public IntroductionRequestReceivedEvent(
IntroductionRequest introductionRequest, ContactId contactId) { IntroductionRequest introductionRequest, ContactId contactId) {

View File

@@ -2,15 +2,15 @@ package org.briarproject.briar.api.introduction.event;
import org.briarproject.bramble.api.contact.ContactId; import org.briarproject.bramble.api.contact.ContactId;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.briar.api.conversation.event.ConversationMessageReceivedEvent;
import org.briarproject.briar.api.introduction.IntroductionResponse; import org.briarproject.briar.api.introduction.IntroductionResponse;
import org.briarproject.briar.api.messaging.event.PrivateMessageReceivedEvent;
import javax.annotation.concurrent.Immutable; import javax.annotation.concurrent.Immutable;
@Immutable @Immutable
@NotNullByDefault @NotNullByDefault
public class IntroductionResponseReceivedEvent extends public class IntroductionResponseReceivedEvent extends
PrivateMessageReceivedEvent<IntroductionResponse> { ConversationMessageReceivedEvent<IntroductionResponse> {
public IntroductionResponseReceivedEvent( public IntroductionResponseReceivedEvent(
IntroductionResponse introductionResponse, ContactId contactId) { IntroductionResponse introductionResponse, ContactId contactId) {

View File

@@ -6,7 +6,7 @@ import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.bramble.api.sync.ClientId; import org.briarproject.bramble.api.sync.ClientId;
import org.briarproject.bramble.api.sync.GroupId; import org.briarproject.bramble.api.sync.GroupId;
import org.briarproject.bramble.api.sync.MessageId; import org.briarproject.bramble.api.sync.MessageId;
import org.briarproject.briar.api.messaging.ConversationManager.ConversationClient; import org.briarproject.briar.api.conversation.ConversationManager.ConversationClient;
@NotNullByDefault @NotNullByDefault
public interface MessagingManager extends ConversationClient { public interface MessagingManager extends ConversationClient {

View File

@@ -3,58 +3,23 @@ package org.briarproject.briar.api.messaging;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.bramble.api.sync.GroupId; import org.briarproject.bramble.api.sync.GroupId;
import org.briarproject.bramble.api.sync.MessageId; import org.briarproject.bramble.api.sync.MessageId;
import org.briarproject.briar.api.conversation.ConversationMessageHeader;
import org.briarproject.briar.api.conversation.ConversationMessageVisitor;
import javax.annotation.concurrent.Immutable; import javax.annotation.concurrent.Immutable;
@Immutable @Immutable
@NotNullByDefault @NotNullByDefault
public class PrivateMessageHeader { public class PrivateMessageHeader extends ConversationMessageHeader {
private final MessageId id;
private final GroupId groupId;
private final long timestamp;
private final boolean local, sent, seen, read;
public PrivateMessageHeader(MessageId id, GroupId groupId, long timestamp, public PrivateMessageHeader(MessageId id, GroupId groupId, long timestamp,
boolean local, boolean read, boolean sent, boolean seen) { boolean local, boolean read, boolean sent, boolean seen) {
this.id = id; super(id, groupId, timestamp, local, read, sent, seen);
this.groupId = groupId;
this.timestamp = timestamp;
this.local = local;
this.sent = sent;
this.seen = seen;
this.read = read;
} }
public MessageId getId() { @Override
return id; public <T> T accept(ConversationMessageVisitor<T> v) {
}
public GroupId getGroupId() {
return groupId;
}
public long getTimestamp() {
return timestamp;
}
public boolean isLocal() {
return local;
}
public boolean isSent() {
return sent;
}
public boolean isSeen() {
return seen;
}
public boolean isRead() {
return read;
}
public <T> T accept(PrivateMessageVisitor<T> v) {
return v.visitPrivateMessageHeader(this); return v.visitPrivateMessageHeader(this);
} }
} }

View File

@@ -1,8 +1,8 @@
package org.briarproject.briar.api.messaging.event; package org.briarproject.briar.api.messaging.event;
import org.briarproject.bramble.api.contact.ContactId; import org.briarproject.bramble.api.contact.ContactId;
import org.briarproject.bramble.api.event.Event;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.briar.api.conversation.event.ConversationMessageReceivedEvent;
import org.briarproject.briar.api.messaging.PrivateMessageHeader; import org.briarproject.briar.api.messaging.PrivateMessageHeader;
import javax.annotation.concurrent.Immutable; import javax.annotation.concurrent.Immutable;
@@ -12,22 +12,12 @@ import javax.annotation.concurrent.Immutable;
*/ */
@Immutable @Immutable
@NotNullByDefault @NotNullByDefault
public class PrivateMessageReceivedEvent<H extends PrivateMessageHeader> public class PrivateMessageReceivedEvent
extends Event { extends ConversationMessageReceivedEvent<PrivateMessageHeader> {
private final H messageHeader; public PrivateMessageReceivedEvent(PrivateMessageHeader messageHeader,
private final ContactId contactId; ContactId contactId) {
super(messageHeader, contactId);
public PrivateMessageReceivedEvent(H messageHeader, ContactId contactId) {
this.messageHeader = messageHeader;
this.contactId = contactId;
} }
public H getMessageHeader() {
return messageHeader;
}
public ContactId getContactId() {
return contactId;
}
} }

View File

@@ -2,7 +2,7 @@ package org.briarproject.briar.api.privategroup.event;
import org.briarproject.bramble.api.contact.ContactId; import org.briarproject.bramble.api.contact.ContactId;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.briar.api.messaging.event.PrivateMessageReceivedEvent; import org.briarproject.briar.api.conversation.event.ConversationMessageReceivedEvent;
import org.briarproject.briar.api.privategroup.invitation.GroupInvitationRequest; import org.briarproject.briar.api.privategroup.invitation.GroupInvitationRequest;
import javax.annotation.concurrent.Immutable; import javax.annotation.concurrent.Immutable;
@@ -10,7 +10,7 @@ import javax.annotation.concurrent.Immutable;
@Immutable @Immutable
@NotNullByDefault @NotNullByDefault
public class GroupInvitationRequestReceivedEvent extends public class GroupInvitationRequestReceivedEvent extends
PrivateMessageReceivedEvent<GroupInvitationRequest> { ConversationMessageReceivedEvent<GroupInvitationRequest> {
public GroupInvitationRequestReceivedEvent(GroupInvitationRequest request, public GroupInvitationRequestReceivedEvent(GroupInvitationRequest request,
ContactId contactId) { ContactId contactId) {

View File

@@ -2,7 +2,7 @@ package org.briarproject.briar.api.privategroup.event;
import org.briarproject.bramble.api.contact.ContactId; import org.briarproject.bramble.api.contact.ContactId;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.briar.api.messaging.event.PrivateMessageReceivedEvent; import org.briarproject.briar.api.conversation.event.ConversationMessageReceivedEvent;
import org.briarproject.briar.api.privategroup.invitation.GroupInvitationResponse; import org.briarproject.briar.api.privategroup.invitation.GroupInvitationResponse;
import javax.annotation.concurrent.Immutable; import javax.annotation.concurrent.Immutable;
@@ -10,7 +10,7 @@ import javax.annotation.concurrent.Immutable;
@Immutable @Immutable
@NotNullByDefault @NotNullByDefault
public class GroupInvitationResponseReceivedEvent public class GroupInvitationResponseReceivedEvent
extends PrivateMessageReceivedEvent<GroupInvitationResponse> { extends ConversationMessageReceivedEvent<GroupInvitationResponse> {
public GroupInvitationResponseReceivedEvent( public GroupInvitationResponseReceivedEvent(
GroupInvitationResponse response, ContactId contactId) { GroupInvitationResponse response, ContactId contactId) {

View File

@@ -8,7 +8,7 @@ import org.briarproject.bramble.api.sync.ClientId;
import org.briarproject.bramble.api.sync.GroupId; import org.briarproject.bramble.api.sync.GroupId;
import org.briarproject.briar.api.client.ProtocolStateException; import org.briarproject.briar.api.client.ProtocolStateException;
import org.briarproject.briar.api.client.SessionId; import org.briarproject.briar.api.client.SessionId;
import org.briarproject.briar.api.messaging.ConversationManager.ConversationClient; import org.briarproject.briar.api.conversation.ConversationManager.ConversationClient;
import org.briarproject.briar.api.privategroup.PrivateGroup; import org.briarproject.briar.api.privategroup.PrivateGroup;
import java.util.Collection; import java.util.Collection;

View File

@@ -4,7 +4,7 @@ import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.bramble.api.sync.GroupId; import org.briarproject.bramble.api.sync.GroupId;
import org.briarproject.bramble.api.sync.MessageId; import org.briarproject.bramble.api.sync.MessageId;
import org.briarproject.briar.api.client.SessionId; import org.briarproject.briar.api.client.SessionId;
import org.briarproject.briar.api.messaging.PrivateMessageVisitor; import org.briarproject.briar.api.conversation.ConversationMessageVisitor;
import org.briarproject.briar.api.privategroup.PrivateGroup; import org.briarproject.briar.api.privategroup.PrivateGroup;
import org.briarproject.briar.api.sharing.InvitationRequest; import org.briarproject.briar.api.sharing.InvitationRequest;
@@ -24,7 +24,7 @@ public class GroupInvitationRequest extends InvitationRequest<PrivateGroup> {
} }
@Override @Override
public <T> T accept(PrivateMessageVisitor<T> v) { public <T> T accept(ConversationMessageVisitor<T> v) {
return v.visitGroupInvitationRequest(this); return v.visitGroupInvitationRequest(this);
} }
} }

View File

@@ -4,7 +4,7 @@ import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.bramble.api.sync.GroupId; import org.briarproject.bramble.api.sync.GroupId;
import org.briarproject.bramble.api.sync.MessageId; import org.briarproject.bramble.api.sync.MessageId;
import org.briarproject.briar.api.client.SessionId; import org.briarproject.briar.api.client.SessionId;
import org.briarproject.briar.api.messaging.PrivateMessageVisitor; import org.briarproject.briar.api.conversation.ConversationMessageVisitor;
import org.briarproject.briar.api.sharing.InvitationResponse; import org.briarproject.briar.api.sharing.InvitationResponse;
import javax.annotation.concurrent.Immutable; import javax.annotation.concurrent.Immutable;
@@ -21,7 +21,7 @@ public class GroupInvitationResponse extends InvitationResponse {
} }
@Override @Override
public <T> T accept(PrivateMessageVisitor<T> v) { public <T> T accept(ConversationMessageVisitor<T> v) {
return v.visitGroupInvitationResponse(this); return v.visitGroupInvitationResponse(this);
} }
} }

View File

@@ -3,12 +3,12 @@ package org.briarproject.briar.api.sharing;
import org.briarproject.bramble.api.sync.GroupId; import org.briarproject.bramble.api.sync.GroupId;
import org.briarproject.bramble.api.sync.MessageId; import org.briarproject.bramble.api.sync.MessageId;
import org.briarproject.briar.api.client.SessionId; import org.briarproject.briar.api.client.SessionId;
import org.briarproject.briar.api.messaging.PrivateRequest; import org.briarproject.briar.api.conversation.ConversationRequest;
import javax.annotation.Nullable; import javax.annotation.Nullable;
public abstract class InvitationRequest<S extends Shareable> extends public abstract class InvitationRequest<S extends Shareable> extends
PrivateRequest<S> { ConversationRequest<S> {
private final boolean canBeOpened; private final boolean canBeOpened;

View File

@@ -3,9 +3,9 @@ package org.briarproject.briar.api.sharing;
import org.briarproject.bramble.api.sync.GroupId; import org.briarproject.bramble.api.sync.GroupId;
import org.briarproject.bramble.api.sync.MessageId; import org.briarproject.bramble.api.sync.MessageId;
import org.briarproject.briar.api.client.SessionId; import org.briarproject.briar.api.client.SessionId;
import org.briarproject.briar.api.messaging.PrivateResponse; import org.briarproject.briar.api.conversation.ConversationResponse;
public abstract class InvitationResponse extends PrivateResponse { public abstract class InvitationResponse extends ConversationResponse {
private final GroupId shareableId; private final GroupId shareableId;

View File

@@ -6,7 +6,7 @@ import org.briarproject.bramble.api.db.DbException;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.bramble.api.sync.GroupId; import org.briarproject.bramble.api.sync.GroupId;
import org.briarproject.briar.api.client.SessionId; import org.briarproject.briar.api.client.SessionId;
import org.briarproject.briar.api.messaging.ConversationManager.ConversationClient; import org.briarproject.briar.api.conversation.ConversationManager.ConversationClient;
import java.util.Collection; import java.util.Collection;

View File

@@ -12,7 +12,7 @@ import org.briarproject.bramble.api.sync.GroupId;
import org.briarproject.bramble.api.sync.MessageId; import org.briarproject.bramble.api.sync.MessageId;
import org.briarproject.briar.api.client.MessageTracker; import org.briarproject.briar.api.client.MessageTracker;
import org.briarproject.briar.api.client.MessageTracker.GroupCount; import org.briarproject.briar.api.client.MessageTracker.GroupCount;
import org.briarproject.briar.api.messaging.ConversationManager.ConversationClient; import org.briarproject.briar.api.conversation.ConversationManager.ConversationClient;
import javax.annotation.concurrent.Immutable; import javax.annotation.concurrent.Immutable;

View File

@@ -31,11 +31,11 @@ import org.briarproject.bramble.api.versioning.ClientVersioningManager;
import org.briarproject.bramble.api.versioning.ClientVersioningManager.ClientVersioningHook; import org.briarproject.bramble.api.versioning.ClientVersioningManager.ClientVersioningHook;
import org.briarproject.briar.api.client.MessageTracker; import org.briarproject.briar.api.client.MessageTracker;
import org.briarproject.briar.api.client.SessionId; import org.briarproject.briar.api.client.SessionId;
import org.briarproject.briar.api.conversation.ConversationMessageHeader;
import org.briarproject.briar.api.introduction.IntroductionManager; import org.briarproject.briar.api.introduction.IntroductionManager;
import org.briarproject.briar.api.introduction.IntroductionRequest; import org.briarproject.briar.api.introduction.IntroductionRequest;
import org.briarproject.briar.api.introduction.IntroductionResponse; import org.briarproject.briar.api.introduction.IntroductionResponse;
import org.briarproject.briar.api.introduction.Role; import org.briarproject.briar.api.introduction.Role;
import org.briarproject.briar.api.messaging.PrivateMessageHeader;
import org.briarproject.briar.client.ConversationClientImpl; import org.briarproject.briar.client.ConversationClientImpl;
import org.briarproject.briar.introduction.IntroducerSession.Introducee; import org.briarproject.briar.introduction.IntroducerSession.Introducee;
@@ -401,15 +401,15 @@ class IntroductionManagerImpl extends ConversationClientImpl
} }
@Override @Override
public Collection<PrivateMessageHeader> getMessageHeaders(Transaction txn, public Collection<ConversationMessageHeader> getMessageHeaders(
ContactId c) throws DbException { Transaction txn, ContactId c) throws DbException {
try { try {
Contact contact = db.getContact(txn, c); Contact contact = db.getContact(txn, c);
GroupId contactGroupId = getContactGroup(contact).getId(); GroupId contactGroupId = getContactGroup(contact).getId();
BdfDictionary query = messageParser.getMessagesVisibleInUiQuery(); BdfDictionary query = messageParser.getMessagesVisibleInUiQuery();
Map<MessageId, BdfDictionary> results = clientHelper Map<MessageId, BdfDictionary> results = clientHelper
.getMessageMetadataAsDictionary(txn, contactGroupId, query); .getMessageMetadataAsDictionary(txn, contactGroupId, query);
List<PrivateMessageHeader> messages = List<ConversationMessageHeader> messages =
new ArrayList<>(results.size()); new ArrayList<>(results.size());
Map<AuthorId, AuthorInfo> authorInfos = new HashMap<>(); Map<AuthorId, AuthorInfo> authorInfos = new HashMap<>();
for (Entry<MessageId, BdfDictionary> e : results.entrySet()) { for (Entry<MessageId, BdfDictionary> e : results.entrySet()) {

View File

@@ -8,7 +8,7 @@ import org.briarproject.bramble.api.sync.ValidationManager;
import org.briarproject.bramble.api.system.Clock; import org.briarproject.bramble.api.system.Clock;
import org.briarproject.bramble.api.versioning.ClientVersioningManager; import org.briarproject.bramble.api.versioning.ClientVersioningManager;
import org.briarproject.briar.api.introduction.IntroductionManager; import org.briarproject.briar.api.introduction.IntroductionManager;
import org.briarproject.briar.api.messaging.ConversationManager; import org.briarproject.briar.api.conversation.ConversationManager;
import javax.inject.Inject; import javax.inject.Inject;
import javax.inject.Singleton; import javax.inject.Singleton;

View File

@@ -6,8 +6,8 @@ import org.briarproject.bramble.api.db.DbException;
import org.briarproject.bramble.api.db.Transaction; import org.briarproject.bramble.api.db.Transaction;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.briar.api.client.MessageTracker.GroupCount; import org.briarproject.briar.api.client.MessageTracker.GroupCount;
import org.briarproject.briar.api.messaging.ConversationManager; import org.briarproject.briar.api.conversation.ConversationManager;
import org.briarproject.briar.api.messaging.PrivateMessageHeader; import org.briarproject.briar.api.conversation.ConversationMessageHeader;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
@@ -38,9 +38,9 @@ class ConversationManagerImpl implements ConversationManager {
} }
@Override @Override
public Collection<PrivateMessageHeader> getMessageHeaders(ContactId c) public Collection<ConversationMessageHeader> getMessageHeaders(ContactId c)
throws DbException { throws DbException {
List<PrivateMessageHeader> messages = new ArrayList<>(); List<ConversationMessageHeader> messages = new ArrayList<>();
Transaction txn = db.startTransaction(true); Transaction txn = db.startTransaction(true);
try { try {
for (ConversationClient client : clients) { for (ConversationClient client : clients) {

View File

@@ -23,6 +23,7 @@ import org.briarproject.bramble.api.sync.MessageStatus;
import org.briarproject.bramble.api.versioning.ClientVersioningManager; import org.briarproject.bramble.api.versioning.ClientVersioningManager;
import org.briarproject.bramble.api.versioning.ClientVersioningManager.ClientVersioningHook; import org.briarproject.bramble.api.versioning.ClientVersioningManager.ClientVersioningHook;
import org.briarproject.briar.api.client.MessageTracker; import org.briarproject.briar.api.client.MessageTracker;
import org.briarproject.briar.api.conversation.ConversationMessageHeader;
import org.briarproject.briar.api.messaging.MessagingManager; import org.briarproject.briar.api.messaging.MessagingManager;
import org.briarproject.briar.api.messaging.PrivateMessage; import org.briarproject.briar.api.messaging.PrivateMessage;
import org.briarproject.briar.api.messaging.PrivateMessageHeader; import org.briarproject.briar.api.messaging.PrivateMessageHeader;
@@ -116,8 +117,8 @@ class MessagingManagerImpl extends ConversationClientImpl
PrivateMessageHeader header = new PrivateMessageHeader( PrivateMessageHeader header = new PrivateMessageHeader(
m.getId(), groupId, timestamp, local, read, false, false); m.getId(), groupId, timestamp, local, read, false, false);
ContactId contactId = getContactId(txn, groupId); ContactId contactId = getContactId(txn, groupId);
PrivateMessageReceivedEvent<PrivateMessageHeader> event = PrivateMessageReceivedEvent event =
new PrivateMessageReceivedEvent<>(header, contactId); new PrivateMessageReceivedEvent(header, contactId);
txn.attach(event); txn.attach(event);
messageTracker.trackIncomingMessage(txn, m); messageTracker.trackIncomingMessage(txn, m);
@@ -178,8 +179,8 @@ class MessagingManagerImpl extends ConversationClientImpl
} }
@Override @Override
public Collection<PrivateMessageHeader> getMessageHeaders(Transaction txn, public Collection<ConversationMessageHeader> getMessageHeaders(
ContactId c) throws DbException { Transaction txn, ContactId c) throws DbException {
Map<MessageId, BdfDictionary> metadata; Map<MessageId, BdfDictionary> metadata;
Collection<MessageStatus> statuses; Collection<MessageStatus> statuses;
GroupId g; GroupId g;
@@ -190,7 +191,7 @@ class MessagingManagerImpl extends ConversationClientImpl
} catch (FormatException e) { } catch (FormatException e) {
throw new DbException(e); throw new DbException(e);
} }
Collection<PrivateMessageHeader> headers = new ArrayList<>(); Collection<ConversationMessageHeader> headers = new ArrayList<>();
for (MessageStatus s : statuses) { for (MessageStatus s : statuses) {
MessageId id = s.getMessageId(); MessageId id = s.getMessageId();
BdfDictionary meta = metadata.get(id); BdfDictionary meta = metadata.get(id);

View File

@@ -7,7 +7,7 @@ import org.briarproject.bramble.api.lifecycle.LifecycleManager;
import org.briarproject.bramble.api.sync.ValidationManager; import org.briarproject.bramble.api.sync.ValidationManager;
import org.briarproject.bramble.api.system.Clock; import org.briarproject.bramble.api.system.Clock;
import org.briarproject.bramble.api.versioning.ClientVersioningManager; import org.briarproject.bramble.api.versioning.ClientVersioningManager;
import org.briarproject.briar.api.messaging.ConversationManager; import org.briarproject.briar.api.conversation.ConversationManager;
import org.briarproject.briar.api.messaging.MessagingManager; import org.briarproject.briar.api.messaging.MessagingManager;
import org.briarproject.briar.api.messaging.PrivateMessageFactory; import org.briarproject.briar.api.messaging.PrivateMessageFactory;

View File

@@ -26,7 +26,7 @@ import org.briarproject.bramble.api.versioning.ClientVersioningManager;
import org.briarproject.bramble.api.versioning.ClientVersioningManager.ClientVersioningHook; import org.briarproject.bramble.api.versioning.ClientVersioningManager.ClientVersioningHook;
import org.briarproject.briar.api.client.MessageTracker; import org.briarproject.briar.api.client.MessageTracker;
import org.briarproject.briar.api.client.SessionId; import org.briarproject.briar.api.client.SessionId;
import org.briarproject.briar.api.messaging.PrivateMessageHeader; import org.briarproject.briar.api.conversation.ConversationMessageHeader;
import org.briarproject.briar.api.privategroup.PrivateGroup; import org.briarproject.briar.api.privategroup.PrivateGroup;
import org.briarproject.briar.api.privategroup.PrivateGroupFactory; import org.briarproject.briar.api.privategroup.PrivateGroupFactory;
import org.briarproject.briar.api.privategroup.PrivateGroupManager; import org.briarproject.briar.api.privategroup.PrivateGroupManager;
@@ -368,7 +368,7 @@ class GroupInvitationManagerImpl extends ConversationClientImpl
} }
@Override @Override
public Collection<PrivateMessageHeader> getMessageHeaders(Transaction txn, public Collection<ConversationMessageHeader> getMessageHeaders(Transaction txn,
ContactId c) throws DbException { ContactId c) throws DbException {
try { try {
Contact contact = db.getContact(txn, c); Contact contact = db.getContact(txn, c);
@@ -376,7 +376,7 @@ class GroupInvitationManagerImpl extends ConversationClientImpl
BdfDictionary query = messageParser.getMessagesVisibleInUiQuery(); BdfDictionary query = messageParser.getMessagesVisibleInUiQuery();
Map<MessageId, BdfDictionary> results = clientHelper Map<MessageId, BdfDictionary> results = clientHelper
.getMessageMetadataAsDictionary(txn, contactGroupId, query); .getMessageMetadataAsDictionary(txn, contactGroupId, query);
List<PrivateMessageHeader> messages = List<ConversationMessageHeader> messages =
new ArrayList<>(results.size()); new ArrayList<>(results.size());
for (Entry<MessageId, BdfDictionary> e : results.entrySet()) { for (Entry<MessageId, BdfDictionary> e : results.entrySet()) {
MessageId m = e.getKey(); MessageId m = e.getKey();

View File

@@ -7,7 +7,7 @@ import org.briarproject.bramble.api.lifecycle.LifecycleManager;
import org.briarproject.bramble.api.sync.ValidationManager; import org.briarproject.bramble.api.sync.ValidationManager;
import org.briarproject.bramble.api.system.Clock; import org.briarproject.bramble.api.system.Clock;
import org.briarproject.bramble.api.versioning.ClientVersioningManager; import org.briarproject.bramble.api.versioning.ClientVersioningManager;
import org.briarproject.briar.api.messaging.ConversationManager; import org.briarproject.briar.api.conversation.ConversationManager;
import org.briarproject.briar.api.privategroup.PrivateGroupFactory; import org.briarproject.briar.api.privategroup.PrivateGroupFactory;
import org.briarproject.briar.api.privategroup.PrivateGroupManager; import org.briarproject.briar.api.privategroup.PrivateGroupManager;
import org.briarproject.briar.api.privategroup.invitation.GroupInvitationFactory; import org.briarproject.briar.api.privategroup.invitation.GroupInvitationFactory;

View File

@@ -18,7 +18,7 @@ import org.briarproject.briar.api.blog.BlogManager;
import org.briarproject.briar.api.blog.event.BlogInvitationRequestReceivedEvent; import org.briarproject.briar.api.blog.event.BlogInvitationRequestReceivedEvent;
import org.briarproject.briar.api.blog.event.BlogInvitationResponseReceivedEvent; import org.briarproject.briar.api.blog.event.BlogInvitationResponseReceivedEvent;
import org.briarproject.briar.api.client.MessageTracker; import org.briarproject.briar.api.client.MessageTracker;
import org.briarproject.briar.api.messaging.PrivateRequest; import org.briarproject.briar.api.conversation.ConversationRequest;
import javax.annotation.concurrent.Immutable; import javax.annotation.concurrent.Immutable;
import javax.inject.Inject; import javax.inject.Inject;
@@ -50,7 +50,7 @@ class BlogProtocolEngineImpl extends ProtocolEngineImpl<Blog> {
@Override @Override
Event getInvitationRequestReceivedEvent(InviteMessage<Blog> m, Event getInvitationRequestReceivedEvent(InviteMessage<Blog> m,
ContactId contactId, boolean available, boolean canBeOpened) { ContactId contactId, boolean available, boolean canBeOpened) {
PrivateRequest<Blog> request = invitationFactory ConversationRequest<Blog> request = invitationFactory
.createInvitationRequest(false, false, true, false, m, .createInvitationRequest(false, false, true, false, m,
contactId, available, canBeOpened); contactId, available, canBeOpened);
return new BlogInvitationRequestReceivedEvent(request, contactId); return new BlogInvitationRequestReceivedEvent(request, contactId);

View File

@@ -18,7 +18,7 @@ import org.briarproject.briar.api.forum.ForumInvitationResponse;
import org.briarproject.briar.api.forum.ForumManager; import org.briarproject.briar.api.forum.ForumManager;
import org.briarproject.briar.api.forum.event.ForumInvitationRequestReceivedEvent; import org.briarproject.briar.api.forum.event.ForumInvitationRequestReceivedEvent;
import org.briarproject.briar.api.forum.event.ForumInvitationResponseReceivedEvent; import org.briarproject.briar.api.forum.event.ForumInvitationResponseReceivedEvent;
import org.briarproject.briar.api.messaging.PrivateRequest; import org.briarproject.briar.api.conversation.ConversationRequest;
import javax.annotation.concurrent.Immutable; import javax.annotation.concurrent.Immutable;
import javax.inject.Inject; import javax.inject.Inject;
@@ -51,7 +51,7 @@ class ForumProtocolEngineImpl extends ProtocolEngineImpl<Forum> {
@Override @Override
Event getInvitationRequestReceivedEvent(InviteMessage<Forum> m, Event getInvitationRequestReceivedEvent(InviteMessage<Forum> m,
ContactId contactId, boolean available, boolean canBeOpened) { ContactId contactId, boolean available, boolean canBeOpened) {
PrivateRequest<Forum> request = invitationFactory ConversationRequest<Forum> request = invitationFactory
.createInvitationRequest(false, false, true, false, m, .createInvitationRequest(false, false, true, false, m,
contactId, available, canBeOpened); contactId, available, canBeOpened);
return new ForumInvitationRequestReceivedEvent(request, contactId); return new ForumInvitationRequestReceivedEvent(request, contactId);

View File

@@ -3,13 +3,13 @@ package org.briarproject.briar.sharing;
import org.briarproject.bramble.api.contact.ContactId; import org.briarproject.bramble.api.contact.ContactId;
import org.briarproject.bramble.api.sync.GroupId; import org.briarproject.bramble.api.sync.GroupId;
import org.briarproject.bramble.api.sync.MessageId; import org.briarproject.bramble.api.sync.MessageId;
import org.briarproject.briar.api.messaging.PrivateRequest; import org.briarproject.briar.api.conversation.ConversationRequest;
import org.briarproject.briar.api.sharing.InvitationResponse; import org.briarproject.briar.api.sharing.InvitationResponse;
import org.briarproject.briar.api.sharing.Shareable; import org.briarproject.briar.api.sharing.Shareable;
public interface InvitationFactory<S extends Shareable, R extends InvitationResponse> { public interface InvitationFactory<S extends Shareable, R extends InvitationResponse> {
PrivateRequest<S> createInvitationRequest(boolean local, boolean sent, ConversationRequest<S> createInvitationRequest(boolean local, boolean sent,
boolean seen, boolean read, InviteMessage<S> m, ContactId c, boolean seen, boolean read, InviteMessage<S> m, ContactId c,
boolean available, boolean canBeOpened); boolean available, boolean canBeOpened);

View File

@@ -26,8 +26,8 @@ import org.briarproject.bramble.api.versioning.ClientVersioningManager;
import org.briarproject.bramble.api.versioning.ClientVersioningManager.ClientVersioningHook; import org.briarproject.bramble.api.versioning.ClientVersioningManager.ClientVersioningHook;
import org.briarproject.briar.api.client.MessageTracker; import org.briarproject.briar.api.client.MessageTracker;
import org.briarproject.briar.api.client.SessionId; import org.briarproject.briar.api.client.SessionId;
import org.briarproject.briar.api.messaging.PrivateMessageHeader; import org.briarproject.briar.api.conversation.ConversationMessageHeader;
import org.briarproject.briar.api.messaging.PrivateRequest; import org.briarproject.briar.api.conversation.ConversationRequest;
import org.briarproject.briar.api.sharing.InvitationResponse; import org.briarproject.briar.api.sharing.InvitationResponse;
import org.briarproject.briar.api.sharing.Shareable; import org.briarproject.briar.api.sharing.Shareable;
import org.briarproject.briar.api.sharing.SharingInvitationItem; import org.briarproject.briar.api.sharing.SharingInvitationItem;
@@ -321,15 +321,15 @@ abstract class SharingManagerImpl<S extends Shareable>
} }
@Override @Override
public Collection<PrivateMessageHeader> getMessageHeaders(Transaction txn, public Collection<ConversationMessageHeader> getMessageHeaders(
ContactId c) throws DbException { Transaction txn, ContactId c) throws DbException {
try { try {
Contact contact = db.getContact(txn, c); Contact contact = db.getContact(txn, c);
GroupId contactGroupId = getContactGroup(contact).getId(); GroupId contactGroupId = getContactGroup(contact).getId();
BdfDictionary query = messageParser.getMessagesVisibleInUiQuery(); BdfDictionary query = messageParser.getMessagesVisibleInUiQuery();
Map<MessageId, BdfDictionary> results = clientHelper Map<MessageId, BdfDictionary> results = clientHelper
.getMessageMetadataAsDictionary(txn, contactGroupId, query); .getMessageMetadataAsDictionary(txn, contactGroupId, query);
Collection<PrivateMessageHeader> messages = Collection<ConversationMessageHeader> messages =
new ArrayList<>(results.size()); new ArrayList<>(results.size());
for (Entry<MessageId, BdfDictionary> e : results.entrySet()) { for (Entry<MessageId, BdfDictionary> e : results.entrySet()) {
MessageId m = e.getKey(); MessageId m = e.getKey();
@@ -354,7 +354,7 @@ abstract class SharingManagerImpl<S extends Shareable>
} }
} }
private PrivateRequest<S> parseInvitationRequest(Transaction txn, private ConversationRequest<S> parseInvitationRequest(Transaction txn,
ContactId c, MessageId m, MessageMetadata meta, ContactId c, MessageId m, MessageMetadata meta,
MessageStatus status) throws DbException, FormatException { MessageStatus status) throws DbException, FormatException {
// Look up the invite message to get the details of the private group // Look up the invite message to get the details of the private group

View File

@@ -17,7 +17,7 @@ import org.briarproject.briar.api.forum.ForumFactory;
import org.briarproject.briar.api.forum.ForumInvitationResponse; import org.briarproject.briar.api.forum.ForumInvitationResponse;
import org.briarproject.briar.api.forum.ForumManager; import org.briarproject.briar.api.forum.ForumManager;
import org.briarproject.briar.api.forum.ForumSharingManager; import org.briarproject.briar.api.forum.ForumSharingManager;
import org.briarproject.briar.api.messaging.ConversationManager; import org.briarproject.briar.api.conversation.ConversationManager;
import javax.inject.Inject; import javax.inject.Inject;
import javax.inject.Singleton; import javax.inject.Singleton;

View File

@@ -24,6 +24,7 @@ import org.briarproject.bramble.api.sync.MessageId;
import org.briarproject.bramble.test.TestDatabaseModule; import org.briarproject.bramble.test.TestDatabaseModule;
import org.briarproject.briar.api.client.ProtocolStateException; import org.briarproject.briar.api.client.ProtocolStateException;
import org.briarproject.briar.api.client.SessionId; import org.briarproject.briar.api.client.SessionId;
import org.briarproject.briar.api.conversation.ConversationMessageHeader;
import org.briarproject.briar.api.introduction.IntroductionManager; import org.briarproject.briar.api.introduction.IntroductionManager;
import org.briarproject.briar.api.introduction.IntroductionRequest; import org.briarproject.briar.api.introduction.IntroductionRequest;
import org.briarproject.briar.api.introduction.IntroductionResponse; import org.briarproject.briar.api.introduction.IntroductionResponse;
@@ -297,7 +298,7 @@ public class IntroductionIntegrationTest
Group g1 = introductionManager0.getContactGroup(introducee1); Group g1 = introductionManager0.getContactGroup(introducee1);
Group g2 = introductionManager0.getContactGroup(introducee2); Group g2 = introductionManager0.getContactGroup(introducee2);
Collection<PrivateMessageHeader> messages = Collection<ConversationMessageHeader> messages =
db0.transactionWithResult(true, txn -> introductionManager0 db0.transactionWithResult(true, txn -> introductionManager0
.getMessageHeaders(txn, contactId1From0)); .getMessageHeaders(txn, contactId1From0));
assertEquals(2, messages.size()); assertEquals(2, messages.size());
@@ -363,7 +364,7 @@ public class IntroductionIntegrationTest
assertFalse(contactManager2 assertFalse(contactManager2
.contactExists(author1.getId(), author2.getId())); .contactExists(author1.getId(), author2.getId()));
Collection<PrivateMessageHeader> messages = Collection<ConversationMessageHeader> messages =
db0.transactionWithResult(true, txn -> introductionManager0 db0.transactionWithResult(true, txn -> introductionManager0
.getMessageHeaders(txn, contactId1From0)); .getMessageHeaders(txn, contactId1From0));
assertEquals(2, messages.size()); assertEquals(2, messages.size());
@@ -1102,31 +1103,31 @@ public class IntroductionIntegrationTest
} }
private void assertDefaultUiMessages() throws DbException { private void assertDefaultUiMessages() throws DbException {
Collection<PrivateMessageHeader> messages = Collection<ConversationMessageHeader> messages =
db0.transactionWithResult(true, txn -> introductionManager0 db0.transactionWithResult(true, txn -> introductionManager0
.getMessageHeaders(txn, contactId1From0)); .getMessageHeaders(txn, contactId1From0));
assertEquals(2, messages.size()); assertEquals(2, messages.size());
assertMessagesAreAcked(messages); assertMessagesAreAcked(messages);
messages = db0.transactionWithResult(true, messages = db0.transactionWithResult(true, txn -> introductionManager0
txn -> introductionManager0.getMessageHeaders(txn, contactId2From0)); .getMessageHeaders(txn, contactId2From0));
assertEquals(2, messages.size()); assertEquals(2, messages.size());
assertMessagesAreAcked(messages); assertMessagesAreAcked(messages);
messages = db1.transactionWithResult(true, messages = db1.transactionWithResult(true, txn -> introductionManager1
txn -> introductionManager1.getMessageHeaders(txn, contactId0From1)); .getMessageHeaders(txn, contactId0From1));
assertEquals(2, messages.size()); assertEquals(2, messages.size());
assertMessagesAreAcked(messages); assertMessagesAreAcked(messages);
messages = db2.transactionWithResult(true, messages = db2.transactionWithResult(true, txn -> introductionManager2
txn -> introductionManager2.getMessageHeaders(txn, contactId0From2)); .getMessageHeaders(txn, contactId0From2));
assertEquals(2, messages.size()); assertEquals(2, messages.size());
assertMessagesAreAcked(messages); assertMessagesAreAcked(messages);
} }
private void assertMessagesAreAcked( private void assertMessagesAreAcked(
Collection<PrivateMessageHeader> messages) { Collection<ConversationMessageHeader> messages) {
for (PrivateMessageHeader msg : messages) { for (ConversationMessageHeader msg : messages) {
if (msg.isLocal()) assertTrue(msg.isSeen()); if (msg.isLocal()) assertTrue(msg.isSeen());
} }
} }
@@ -1302,9 +1303,9 @@ public class IntroductionIntegrationTest
private IntroductionRequest getIntroductionRequest(DatabaseComponent db, private IntroductionRequest getIntroductionRequest(DatabaseComponent db,
IntroductionManager manager, ContactId contactId) IntroductionManager manager, ContactId contactId)
throws DbException { throws DbException {
Collection<PrivateMessageHeader> messages = db.transactionWithResult( Collection<ConversationMessageHeader> messages = db.transactionWithResult(
true, txn -> manager.getMessageHeaders(txn, contactId)); true, txn -> manager.getMessageHeaders(txn, contactId));
for (PrivateMessageHeader im : messages) { for (ConversationMessageHeader im : messages) {
if (im instanceof IntroductionRequest) { if (im instanceof IntroductionRequest) {
return (IntroductionRequest) im; return (IntroductionRequest) im;
} }

View File

@@ -4,6 +4,7 @@ import org.briarproject.bramble.api.db.DbException;
import org.briarproject.bramble.api.sync.Group; import org.briarproject.bramble.api.sync.Group;
import org.briarproject.bramble.test.TestDatabaseModule; import org.briarproject.bramble.test.TestDatabaseModule;
import org.briarproject.briar.api.client.ProtocolStateException; import org.briarproject.briar.api.client.ProtocolStateException;
import org.briarproject.briar.api.conversation.ConversationMessageHeader;
import org.briarproject.briar.api.messaging.PrivateMessageHeader; import org.briarproject.briar.api.messaging.PrivateMessageHeader;
import org.briarproject.briar.api.privategroup.GroupMessage; import org.briarproject.briar.api.privategroup.GroupMessage;
import org.briarproject.briar.api.privategroup.PrivateGroup; import org.briarproject.briar.api.privategroup.PrivateGroup;
@@ -91,7 +92,7 @@ public class GroupInvitationIntegrationTest
assertEquals(privateGroup0.getName(), item.getName()); assertEquals(privateGroup0.getName(), item.getName());
assertFalse(item.isSubscribed()); assertFalse(item.isSubscribed());
Collection<PrivateMessageHeader> messages = Collection<ConversationMessageHeader> messages =
db1.transactionWithResult(true, txn -> groupInvitationManager1 db1.transactionWithResult(true, txn -> groupInvitationManager1
.getMessageHeaders(txn, contactId0From1)); .getMessageHeaders(txn, contactId0From1));
assertEquals(1, messages.size()); assertEquals(1, messages.size());
@@ -118,12 +119,12 @@ public class GroupInvitationIntegrationTest
groupInvitationManager1 groupInvitationManager1
.respondToInvitation(contactId0From1, privateGroup0, false); .respondToInvitation(contactId0From1, privateGroup0, false);
Collection<PrivateMessageHeader> messages = Collection<ConversationMessageHeader> messages =
db1.transactionWithResult(true, txn -> groupInvitationManager1 db1.transactionWithResult(true, txn -> groupInvitationManager1
.getMessageHeaders(txn, contactId0From1)); .getMessageHeaders(txn, contactId0From1));
assertEquals(2, messages.size()); assertEquals(2, messages.size());
boolean foundResponse = false; boolean foundResponse = false;
for (PrivateMessageHeader m : messages) { for (ConversationMessageHeader m : messages) {
if (m instanceof GroupInvitationResponse) { if (m instanceof GroupInvitationResponse) {
foundResponse = true; foundResponse = true;
GroupInvitationResponse response = (GroupInvitationResponse) m; GroupInvitationResponse response = (GroupInvitationResponse) m;
@@ -140,7 +141,7 @@ public class GroupInvitationIntegrationTest
.getMessageHeaders(txn, contactId1From0)); .getMessageHeaders(txn, contactId1From0));
assertEquals(2, messages.size()); assertEquals(2, messages.size());
foundResponse = false; foundResponse = false;
for (PrivateMessageHeader m : messages) { for (ConversationMessageHeader m : messages) {
if (m instanceof GroupInvitationResponse) { if (m instanceof GroupInvitationResponse) {
foundResponse = true; foundResponse = true;
GroupInvitationResponse response = (GroupInvitationResponse) m; GroupInvitationResponse response = (GroupInvitationResponse) m;
@@ -168,12 +169,12 @@ public class GroupInvitationIntegrationTest
groupInvitationManager1 groupInvitationManager1
.respondToInvitation(contactId0From1, privateGroup0, true); .respondToInvitation(contactId0From1, privateGroup0, true);
Collection<PrivateMessageHeader> messages = Collection<ConversationMessageHeader> messages =
db1.transactionWithResult(true, txn -> groupInvitationManager1 db1.transactionWithResult(true, txn -> groupInvitationManager1
.getMessageHeaders(txn, contactId0From1)); .getMessageHeaders(txn, contactId0From1));
assertEquals(2, messages.size()); assertEquals(2, messages.size());
boolean foundResponse = false; boolean foundResponse = false;
for (PrivateMessageHeader m : messages) { for (ConversationMessageHeader m : messages) {
if (m instanceof GroupInvitationResponse) { if (m instanceof GroupInvitationResponse) {
foundResponse = true; foundResponse = true;
GroupInvitationResponse response = (GroupInvitationResponse) m; GroupInvitationResponse response = (GroupInvitationResponse) m;
@@ -194,7 +195,7 @@ public class GroupInvitationIntegrationTest
.getMessageHeaders(txn, contactId1From0)); .getMessageHeaders(txn, contactId1From0));
assertEquals(2, messages.size()); assertEquals(2, messages.size());
foundResponse = false; foundResponse = false;
for (PrivateMessageHeader m : messages) { for (ConversationMessageHeader m : messages) {
if (m instanceof GroupInvitationResponse) { if (m instanceof GroupInvitationResponse) {
foundResponse = true; foundResponse = true;
GroupInvitationResponse response = (GroupInvitationResponse) m; GroupInvitationResponse response = (GroupInvitationResponse) m;
@@ -226,9 +227,10 @@ public class GroupInvitationIntegrationTest
// 1 has one unread message // 1 has one unread message
Group g0 = groupInvitationManager1.getContactGroup(contact0From1); Group g0 = groupInvitationManager1.getContactGroup(contact0From1);
assertGroupCount(messageTracker1, g0.getId(), 1, 1, timestamp); assertGroupCount(messageTracker1, g0.getId(), 1, 1, timestamp);
PrivateMessageHeader m = db1.transactionWithResult(true, ConversationMessageHeader m = db1.transactionWithResult(true,
txn -> groupInvitationManager1.getMessageHeaders(txn, contactId0From1) txn -> groupInvitationManager1
.iterator().next()); .getMessageHeaders(txn, contactId0From1).iterator()
.next());
groupInvitationManager1 groupInvitationManager1
.respondToInvitation(contactId0From1, privateGroup0, true); .respondToInvitation(contactId0From1, privateGroup0, true);

View File

@@ -24,7 +24,7 @@ import org.briarproject.bramble.test.BrambleMockTestCase;
import org.briarproject.bramble.test.TestUtils; import org.briarproject.bramble.test.TestUtils;
import org.briarproject.briar.api.client.MessageTracker; import org.briarproject.briar.api.client.MessageTracker;
import org.briarproject.briar.api.client.SessionId; import org.briarproject.briar.api.client.SessionId;
import org.briarproject.briar.api.messaging.PrivateMessageHeader; import org.briarproject.briar.api.conversation.ConversationMessageHeader;
import org.briarproject.briar.api.privategroup.PrivateGroup; import org.briarproject.briar.api.privategroup.PrivateGroup;
import org.briarproject.briar.api.privategroup.PrivateGroupFactory; import org.briarproject.briar.api.privategroup.PrivateGroupFactory;
import org.briarproject.briar.api.privategroup.PrivateGroupManager; import org.briarproject.briar.api.privategroup.PrivateGroupManager;
@@ -696,10 +696,10 @@ public class GroupInvitationManagerImplTest extends BrambleMockTestCase {
oneOf(db).getMessageStatus(txn, contactId, messageId2); oneOf(db).getMessageStatus(txn, contactId, messageId2);
}}); }});
Collection<PrivateMessageHeader> messages = Collection<ConversationMessageHeader> messages =
groupInvitationManager.getMessageHeaders(txn, contactId); groupInvitationManager.getMessageHeaders(txn, contactId);
assertEquals(2, messages.size()); assertEquals(2, messages.size());
for (PrivateMessageHeader m : messages) { for (ConversationMessageHeader m : messages) {
assertEquals(contactGroup.getId(), m.getGroupId()); assertEquals(contactGroup.getId(), m.getGroupId());
if (m.getId().equals(message.getId())) { if (m.getId().equals(message.getId())) {
assertTrue(m instanceof GroupInvitationRequest); assertTrue(m instanceof GroupInvitationRequest);

View File

@@ -18,7 +18,7 @@ import org.briarproject.briar.api.blog.BlogManager;
import org.briarproject.briar.api.blog.BlogSharingManager; import org.briarproject.briar.api.blog.BlogSharingManager;
import org.briarproject.briar.api.blog.event.BlogInvitationRequestReceivedEvent; import org.briarproject.briar.api.blog.event.BlogInvitationRequestReceivedEvent;
import org.briarproject.briar.api.blog.event.BlogInvitationResponseReceivedEvent; import org.briarproject.briar.api.blog.event.BlogInvitationResponseReceivedEvent;
import org.briarproject.briar.api.messaging.PrivateMessageHeader; import org.briarproject.briar.api.conversation.ConversationMessageHeader;
import org.briarproject.briar.test.BriarIntegrationTest; import org.briarproject.briar.test.BriarIntegrationTest;
import org.briarproject.briar.test.BriarIntegrationTestComponent; import org.briarproject.briar.test.BriarIntegrationTestComponent;
import org.briarproject.briar.test.DaggerBriarIntegrationTestComponent; import org.briarproject.briar.test.DaggerBriarIntegrationTestComponent;
@@ -146,12 +146,12 @@ public class BlogSharingIntegrationTest
assertTrue(blogManager1.getBlogs().contains(blog2)); assertTrue(blogManager1.getBlogs().contains(blog2));
// invitee has one invitation message from sharer // invitee has one invitation message from sharer
Collection<PrivateMessageHeader> list = db1.transactionWithResult(true, Collection<ConversationMessageHeader> list =
txn -> blogSharingManager1 db1.transactionWithResult(true, txn -> blogSharingManager1
.getMessageHeaders(txn, contactId0From1)); .getMessageHeaders(txn, contactId0From1));
assertEquals(2, list.size()); assertEquals(2, list.size());
// check other things are alright with the message // check other things are alright with the message
for (PrivateMessageHeader m : list) { for (ConversationMessageHeader m : list) {
if (m instanceof BlogInvitationRequest) { if (m instanceof BlogInvitationRequest) {
BlogInvitationRequest invitation = (BlogInvitationRequest) m; BlogInvitationRequest invitation = (BlogInvitationRequest) m;
assertEquals(blog2, invitation.getNameable()); assertEquals(blog2, invitation.getNameable());
@@ -220,11 +220,12 @@ public class BlogSharingIntegrationTest
assertTrue(blogManager1.getBlogs().contains(rssBlog)); assertTrue(blogManager1.getBlogs().contains(rssBlog));
// invitee has one invitation message from sharer // invitee has one invitation message from sharer
Collection<PrivateMessageHeader> list = db1.transactionWithResult(true, Collection<ConversationMessageHeader> list =
txn -> blogSharingManager1.getMessageHeaders(txn, contactId0From1)); db1.transactionWithResult(true, txn -> blogSharingManager1
.getMessageHeaders(txn, contactId0From1));
assertEquals(2, list.size()); assertEquals(2, list.size());
// check other things are alright with the message // check other things are alright with the message
for (PrivateMessageHeader m : list) { for (ConversationMessageHeader m : list) {
if (m instanceof BlogInvitationRequest) { if (m instanceof BlogInvitationRequest) {
BlogInvitationRequest invitation = (BlogInvitationRequest) m; BlogInvitationRequest invitation = (BlogInvitationRequest) m;
assertEquals(rssBlog, invitation.getNameable()); assertEquals(rssBlog, invitation.getNameable());
@@ -282,11 +283,12 @@ public class BlogSharingIntegrationTest
assertEquals(0, blogSharingManager1.getInvitations().size()); assertEquals(0, blogSharingManager1.getInvitations().size());
// invitee has one invitation message from sharer and one response // invitee has one invitation message from sharer and one response
Collection<PrivateMessageHeader> list = db1.transactionWithResult(true, Collection<ConversationMessageHeader> list =
txn -> blogSharingManager1.getMessageHeaders(txn, contactId0From1)); db1.transactionWithResult(true, txn -> blogSharingManager1
.getMessageHeaders(txn, contactId0From1));
assertEquals(2, list.size()); assertEquals(2, list.size());
// check things are alright with the message // check things are alright with the message
for (PrivateMessageHeader m : list) { for (ConversationMessageHeader m : list) {
if (m instanceof BlogInvitationRequest) { if (m instanceof BlogInvitationRequest) {
BlogInvitationRequest invitation = (BlogInvitationRequest) m; BlogInvitationRequest invitation = (BlogInvitationRequest) m;
assertEquals(blog2, invitation.getNameable()); assertEquals(blog2, invitation.getNameable());
@@ -389,7 +391,7 @@ public class BlogSharingIntegrationTest
assertTrue(contacts.contains(contact0From1)); assertTrue(contacts.contains(contact0From1));
// make sure 1 knows that they have blog2 already // make sure 1 knows that they have blog2 already
Collection<PrivateMessageHeader> messages = Collection<ConversationMessageHeader> messages =
db1.transactionWithResult(true, txn -> blogSharingManager1 db1.transactionWithResult(true, txn -> blogSharingManager1
.getMessageHeaders(txn, contactId0From1)); .getMessageHeaders(txn, contactId0From1));
assertEquals(2, messages.size()); assertEquals(2, messages.size());

View File

@@ -12,6 +12,7 @@ import org.briarproject.bramble.api.sync.Group;
import org.briarproject.bramble.api.sync.Message; import org.briarproject.bramble.api.sync.Message;
import org.briarproject.bramble.api.sync.MessageId; import org.briarproject.bramble.api.sync.MessageId;
import org.briarproject.bramble.test.TestDatabaseModule; import org.briarproject.bramble.test.TestDatabaseModule;
import org.briarproject.briar.api.conversation.ConversationMessageHeader;
import org.briarproject.briar.api.forum.Forum; import org.briarproject.briar.api.forum.Forum;
import org.briarproject.briar.api.forum.ForumInvitationRequest; import org.briarproject.briar.api.forum.ForumInvitationRequest;
import org.briarproject.briar.api.forum.ForumInvitationResponse; import org.briarproject.briar.api.forum.ForumInvitationResponse;
@@ -129,11 +130,12 @@ public class ForumSharingIntegrationTest
assertEquals(1, forumManager1.getForums().size()); assertEquals(1, forumManager1.getForums().size());
// invitee has one invitation message from sharer // invitee has one invitation message from sharer
Collection<PrivateMessageHeader> list = db1.transactionWithResult(true, Collection<ConversationMessageHeader> list =
txn -> forumSharingManager1.getMessageHeaders(txn, contactId0From1)); db1.transactionWithResult(true, txn -> forumSharingManager1
.getMessageHeaders(txn, contactId0From1));
assertEquals(2, list.size()); assertEquals(2, list.size());
// check other things are alright with the forum message // check other things are alright with the forum message
for (PrivateMessageHeader m : list) { for (ConversationMessageHeader m : list) {
if (m instanceof ForumInvitationRequest) { if (m instanceof ForumInvitationRequest) {
ForumInvitationRequest invitation = (ForumInvitationRequest) m; ForumInvitationRequest invitation = (ForumInvitationRequest) m;
assertTrue(invitation.wasAnswered()); assertTrue(invitation.wasAnswered());
@@ -185,11 +187,12 @@ public class ForumSharingIntegrationTest
assertEquals(0, forumSharingManager1.getInvitations().size()); assertEquals(0, forumSharingManager1.getInvitations().size());
// invitee has one invitation message from sharer and one response // invitee has one invitation message from sharer and one response
Collection<PrivateMessageHeader> list = db1.transactionWithResult(true, Collection<ConversationMessageHeader> list =
txn -> forumSharingManager1.getMessageHeaders(txn, contactId0From1)); db1.transactionWithResult(true, txn -> forumSharingManager1
.getMessageHeaders(txn, contactId0From1));
assertEquals(2, list.size()); assertEquals(2, list.size());
// check things are alright with the forum message // check things are alright with the forum message
for (PrivateMessageHeader m : list) { for (ConversationMessageHeader m : list) {
if (m instanceof ForumInvitationRequest) { if (m instanceof ForumInvitationRequest) {
ForumInvitationRequest invitation = (ForumInvitationRequest) m; ForumInvitationRequest invitation = (ForumInvitationRequest) m;
assertEquals(forum0, invitation.getNameable()); assertEquals(forum0, invitation.getNameable());
@@ -733,9 +736,9 @@ public class ForumSharingIntegrationTest
// get invitation MessageId for later // get invitation MessageId for later
MessageId invitationId = null; MessageId invitationId = null;
Collection<PrivateMessageHeader> list = db1.transactionWithResult(true, Collection<ConversationMessageHeader> list = db1.transactionWithResult(true,
txn -> forumSharingManager1.getMessageHeaders(txn, contactId0From1)); txn -> forumSharingManager1.getMessageHeaders(txn, contactId0From1));
for (PrivateMessageHeader m : list) { for (ConversationMessageHeader m : list) {
if (m instanceof ForumInvitationRequest) { if (m instanceof ForumInvitationRequest) {
invitationId = m.getId(); invitationId = m.getId();
} }

View File

@@ -195,7 +195,7 @@ it will send a JSON object to connected websocket clients:
"timestamp": 1537389146088, "timestamp": 1537389146088,
"type": "PrivateMessage" "type": "PrivateMessage"
}, },
"name": "PrivateMessageReceivedEvent", "name": "ConversationMessageReceivedEvent",
"type": "event" "type": "event"
} }
``` ```

View File

@@ -1,6 +1,6 @@
package org.briarproject.briar.headless.event package org.briarproject.briar.headless.event
import org.briarproject.briar.api.messaging.event.PrivateMessageReceivedEvent import org.briarproject.briar.api.conversation.event.ConversationMessageReceivedEvent
import org.briarproject.briar.headless.messaging.output import org.briarproject.briar.headless.messaging.output
import javax.annotation.concurrent.Immutable import javax.annotation.concurrent.Immutable
@@ -9,5 +9,5 @@ internal class OutputEvent(val name: String, val data: Any) {
val type = "event" val type = "event"
} }
internal fun PrivateMessageReceivedEvent<*>.output(text: String) = internal fun ConversationMessageReceivedEvent<*>.output(text: String) =
messageHeader.output(contactId, text) messageHeader.output(contactId, text)

View File

@@ -15,13 +15,17 @@ import org.briarproject.bramble.api.system.Clock
import org.briarproject.bramble.util.StringUtils.utf8IsTooLong import org.briarproject.bramble.util.StringUtils.utf8IsTooLong
import org.briarproject.briar.api.blog.BlogInvitationRequest import org.briarproject.briar.api.blog.BlogInvitationRequest
import org.briarproject.briar.api.blog.BlogInvitationResponse import org.briarproject.briar.api.blog.BlogInvitationResponse
import org.briarproject.briar.api.conversation.ConversationManager
import org.briarproject.briar.api.conversation.ConversationMessageVisitor
import org.briarproject.briar.api.conversation.event.ConversationMessageReceivedEvent
import org.briarproject.briar.api.forum.ForumInvitationRequest import org.briarproject.briar.api.forum.ForumInvitationRequest
import org.briarproject.briar.api.forum.ForumInvitationResponse import org.briarproject.briar.api.forum.ForumInvitationResponse
import org.briarproject.briar.api.introduction.IntroductionRequest import org.briarproject.briar.api.introduction.IntroductionRequest
import org.briarproject.briar.api.introduction.IntroductionResponse import org.briarproject.briar.api.introduction.IntroductionResponse
import org.briarproject.briar.api.messaging.*
import org.briarproject.briar.api.messaging.MessagingConstants.MAX_PRIVATE_MESSAGE_TEXT_LENGTH import org.briarproject.briar.api.messaging.MessagingConstants.MAX_PRIVATE_MESSAGE_TEXT_LENGTH
import org.briarproject.briar.api.messaging.event.PrivateMessageReceivedEvent import org.briarproject.briar.api.messaging.MessagingManager
import org.briarproject.briar.api.messaging.PrivateMessageFactory
import org.briarproject.briar.api.messaging.PrivateMessageHeader
import org.briarproject.briar.api.privategroup.invitation.GroupInvitationRequest import org.briarproject.briar.api.privategroup.invitation.GroupInvitationRequest
import org.briarproject.briar.api.privategroup.invitation.GroupInvitationResponse import org.briarproject.briar.api.privategroup.invitation.GroupInvitationResponse
import org.briarproject.briar.headless.event.WebSocketController import org.briarproject.briar.headless.event.WebSocketController
@@ -34,7 +38,7 @@ import javax.annotation.concurrent.Immutable
import javax.inject.Inject import javax.inject.Inject
import javax.inject.Singleton import javax.inject.Singleton
internal const val EVENT_PRIVATE_MESSAGE = "PrivateMessageReceivedEvent" internal const val EVENT_PRIVATE_MESSAGE = "ConversationMessageReceivedEvent"
@Immutable @Immutable
@Singleton @Singleton
@@ -77,7 +81,7 @@ constructor(
override fun eventOccurred(e: Event) { override fun eventOccurred(e: Event) {
when (e) { when (e) {
is PrivateMessageReceivedEvent<*> -> dbExecutor.execute { is ConversationMessageReceivedEvent<*> -> dbExecutor.execute {
val text = messagingManager.getMessageText(e.messageHeader.id) val text = messagingManager.getMessageText(e.messageHeader.id)
webSocketController.sendEvent(EVENT_PRIVATE_MESSAGE, e.output(text)) webSocketController.sendEvent(EVENT_PRIVATE_MESSAGE, e.output(text))
} }
@@ -97,7 +101,7 @@ constructor(
private class JsonVisitor( private class JsonVisitor(
private val contactId: ContactId, private val contactId: ContactId,
private val messagingManager: MessagingManager private val messagingManager: MessagingManager
) : PrivateMessageVisitor<JsonDict> { ) : ConversationMessageVisitor<JsonDict> {
override fun visitPrivateMessageHeader(h: PrivateMessageHeader) = override fun visitPrivateMessageHeader(h: PrivateMessageHeader) =
h.output(contactId, messagingManager.getMessageText(h.id)) h.output(contactId, messagingManager.getMessageText(h.id))

View File

@@ -1,11 +1,11 @@
package org.briarproject.briar.headless.messaging package org.briarproject.briar.headless.messaging
import org.briarproject.bramble.api.contact.ContactId import org.briarproject.bramble.api.contact.ContactId
import org.briarproject.briar.api.conversation.ConversationMessageHeader
import org.briarproject.briar.api.messaging.PrivateMessage import org.briarproject.briar.api.messaging.PrivateMessage
import org.briarproject.briar.api.messaging.PrivateMessageHeader
import org.briarproject.briar.headless.json.JsonDict import org.briarproject.briar.headless.json.JsonDict
internal fun PrivateMessageHeader.output(contactId: ContactId) = JsonDict( internal fun ConversationMessageHeader.output(contactId: ContactId) = JsonDict(
"type" to "PrivateMessage", "type" to "PrivateMessage",
"contactId" to contactId.int, "contactId" to contactId.int,
"timestamp" to timestamp, "timestamp" to timestamp,
@@ -17,7 +17,7 @@ internal fun PrivateMessageHeader.output(contactId: ContactId) = JsonDict(
"groupId" to groupId.bytes "groupId" to groupId.bytes
) )
internal fun PrivateMessageHeader.output(contactId: ContactId, text: String?): JsonDict { internal fun ConversationMessageHeader.output(contactId: ContactId, text: String?): JsonDict {
val dict = output(contactId) val dict = output(contactId)
dict["text"] = text dict["text"] = text
return dict return dict

View File

@@ -2,16 +2,16 @@ package org.briarproject.briar.headless.messaging
import org.briarproject.bramble.api.contact.ContactId import org.briarproject.bramble.api.contact.ContactId
import org.briarproject.briar.api.blog.BlogInvitationRequest import org.briarproject.briar.api.blog.BlogInvitationRequest
import org.briarproject.briar.api.conversation.ConversationMessageHeader
import org.briarproject.briar.api.conversation.ConversationRequest
import org.briarproject.briar.api.forum.ForumInvitationRequest import org.briarproject.briar.api.forum.ForumInvitationRequest
import org.briarproject.briar.api.introduction.IntroductionRequest import org.briarproject.briar.api.introduction.IntroductionRequest
import org.briarproject.briar.api.messaging.PrivateMessageHeader
import org.briarproject.briar.api.messaging.PrivateRequest
import org.briarproject.briar.api.privategroup.invitation.GroupInvitationRequest import org.briarproject.briar.api.privategroup.invitation.GroupInvitationRequest
import org.briarproject.briar.api.sharing.InvitationRequest import org.briarproject.briar.api.sharing.InvitationRequest
import org.briarproject.briar.headless.json.JsonDict import org.briarproject.briar.headless.json.JsonDict
internal fun PrivateRequest<*>.output(contactId: ContactId): JsonDict { internal fun ConversationRequest<*>.output(contactId: ContactId): JsonDict {
val dict = (this as PrivateMessageHeader).output(contactId, text) val dict = (this as ConversationMessageHeader).output(contactId, text)
dict.putAll( dict.putAll(
"sessionId" to sessionId.bytes, "sessionId" to sessionId.bytes,
"name" to name, "name" to name,
@@ -21,7 +21,7 @@ internal fun PrivateRequest<*>.output(contactId: ContactId): JsonDict {
} }
internal fun IntroductionRequest.output(contactId: ContactId): JsonDict { internal fun IntroductionRequest.output(contactId: ContactId): JsonDict {
val dict = (this as PrivateRequest<*>).output(contactId) val dict = (this as ConversationRequest<*>).output(contactId)
dict.putAll( dict.putAll(
"type" to "IntroductionRequest", "type" to "IntroductionRequest",
"alreadyContact" to isContact "alreadyContact" to isContact
@@ -30,7 +30,7 @@ internal fun IntroductionRequest.output(contactId: ContactId): JsonDict {
} }
internal fun InvitationRequest<*>.output(contactId: ContactId): JsonDict { internal fun InvitationRequest<*>.output(contactId: ContactId): JsonDict {
val dict = (this as PrivateRequest<*>).output(contactId) val dict = (this as ConversationRequest<*>).output(contactId)
dict["canBeOpened"] = canBeOpened() dict["canBeOpened"] = canBeOpened()
return dict return dict
} }

View File

@@ -6,12 +6,12 @@ import org.briarproject.briar.api.blog.BlogInvitationResponse
import org.briarproject.briar.api.forum.ForumInvitationResponse import org.briarproject.briar.api.forum.ForumInvitationResponse
import org.briarproject.briar.api.introduction.IntroductionResponse import org.briarproject.briar.api.introduction.IntroductionResponse
import org.briarproject.briar.api.messaging.PrivateMessageHeader import org.briarproject.briar.api.messaging.PrivateMessageHeader
import org.briarproject.briar.api.messaging.PrivateResponse import org.briarproject.briar.api.conversation.ConversationResponse
import org.briarproject.briar.api.privategroup.invitation.GroupInvitationResponse import org.briarproject.briar.api.privategroup.invitation.GroupInvitationResponse
import org.briarproject.briar.api.sharing.InvitationResponse import org.briarproject.briar.api.sharing.InvitationResponse
import org.briarproject.briar.headless.json.JsonDict import org.briarproject.briar.headless.json.JsonDict
internal fun PrivateResponse.output(contactId: ContactId): JsonDict { internal fun ConversationResponse.output(contactId: ContactId): JsonDict {
val dict = (this as PrivateMessageHeader).output(contactId) val dict = (this as PrivateMessageHeader).output(contactId)
dict.putAll( dict.putAll(
"sessionId" to sessionId.bytes, "sessionId" to sessionId.bytes,
@@ -21,7 +21,7 @@ internal fun PrivateResponse.output(contactId: ContactId): JsonDict {
} }
internal fun IntroductionResponse.output(contactId: ContactId): JsonDict { internal fun IntroductionResponse.output(contactId: ContactId): JsonDict {
val dict = (this as PrivateResponse).output(contactId) val dict = (this as ConversationResponse).output(contactId)
dict.putAll( dict.putAll(
"type" to "IntroductionResponse", "type" to "IntroductionResponse",
"introducedAuthor" to introducedAuthor.output(), "introducedAuthor" to introducedAuthor.output(),
@@ -31,7 +31,7 @@ internal fun IntroductionResponse.output(contactId: ContactId): JsonDict {
} }
internal fun InvitationResponse.output(contactId: ContactId): JsonDict { internal fun InvitationResponse.output(contactId: ContactId): JsonDict {
val dict = (this as PrivateResponse).output(contactId) val dict = (this as ConversationResponse).output(contactId)
dict["shareableId"] = shareableId.bytes dict["shareableId"] = shareableId.bytes
return dict return dict
} }

View File

@@ -65,7 +65,7 @@ internal class WebSocketControllerTest : ControllerTest() {
val json = """ val json = """
{ {
"type": "event", "type": "event",
"name": "PrivateMessageReceivedEvent", "name": "ConversationMessageReceivedEvent",
"data": ${toJson(header.output(contact.id, text))} "data": ${toJson(header.output(contact.id, text))}
} }
""" """

View File

@@ -14,6 +14,7 @@ import org.briarproject.bramble.test.ImmediateExecutor
import org.briarproject.bramble.test.TestUtils.getRandomId import org.briarproject.bramble.test.TestUtils.getRandomId
import org.briarproject.bramble.util.StringUtils.getRandomString import org.briarproject.bramble.util.StringUtils.getRandomString
import org.briarproject.briar.api.client.SessionId import org.briarproject.briar.api.client.SessionId
import org.briarproject.briar.api.conversation.ConversationManager
import org.briarproject.briar.api.introduction.IntroductionRequest import org.briarproject.briar.api.introduction.IntroductionRequest
import org.briarproject.briar.api.messaging.* import org.briarproject.briar.api.messaging.*
import org.briarproject.briar.api.messaging.MessagingConstants.MAX_PRIVATE_MESSAGE_TEXT_LENGTH import org.briarproject.briar.api.messaging.MessagingConstants.MAX_PRIVATE_MESSAGE_TEXT_LENGTH