Merge branch '1779-headless-messages-sent-acked' into 'master'

Expose message delivery state changes to websockets API

Closes #1779

See merge request briar/briar!1284
This commit is contained in:
akwizgran
2020-09-29 12:46:41 +00:00
4 changed files with 135 additions and 1 deletions

View File

@@ -11,6 +11,8 @@ import org.briarproject.bramble.api.db.DatabaseExecutor
import org.briarproject.bramble.api.db.NoSuchContactException
import org.briarproject.bramble.api.event.Event
import org.briarproject.bramble.api.event.EventListener
import org.briarproject.bramble.api.sync.event.MessagesAckedEvent
import org.briarproject.bramble.api.sync.event.MessagesSentEvent
import org.briarproject.bramble.api.system.Clock
import org.briarproject.bramble.util.StringUtils.utf8IsTooLong
import org.briarproject.briar.api.blog.BlogInvitationRequest
@@ -39,6 +41,8 @@ import javax.inject.Inject
import javax.inject.Singleton
internal const val EVENT_CONVERSATION_MESSAGE = "ConversationMessageReceivedEvent"
internal const val EVENT_MESSAGES_ACKED = "MessagesAckedEvent"
internal const val EVENT_MESSAGES_SENT = "MessagesSentEvent"
@Immutable
@Singleton
@@ -90,6 +94,12 @@ constructor(
webSocketController.sendEvent(EVENT_CONVERSATION_MESSAGE, e.output())
}
}
is MessagesSentEvent -> {
webSocketController.sendEvent(EVENT_MESSAGES_SENT, e.output())
}
is MessagesAckedEvent -> {
webSocketController.sendEvent(EVENT_MESSAGES_ACKED, e.output())
}
}
}

View File

@@ -1,6 +1,9 @@
package org.briarproject.briar.headless.messaging
import org.briarproject.bramble.api.contact.ContactId
import org.briarproject.bramble.api.sync.MessageId
import org.briarproject.bramble.api.sync.event.MessagesAckedEvent
import org.briarproject.bramble.api.sync.event.MessagesSentEvent
import org.briarproject.briar.api.conversation.ConversationMessageHeader
import org.briarproject.briar.api.messaging.PrivateMessage
import org.briarproject.briar.api.messaging.PrivateMessageHeader
@@ -43,3 +46,15 @@ internal fun PrivateMessage.output(contactId: ContactId, text: String) = JsonDic
"groupId" to message.groupId.bytes,
"text" to text
)
internal fun MessagesAckedEvent.output() = JsonDict(
"contactId" to contactId.int,
"messageIds" to messageIds.toJson()
)
internal fun MessagesSentEvent.output() = JsonDict(
"contactId" to contactId.int,
"messageIds" to messageIds.toJson()
)
internal fun Collection<MessageId>.toJson() = map { it.bytes }