diff --git a/briar-headless/README.md b/briar-headless/README.md index 4a00e97ab..2acfdac3a 100644 --- a/briar-headless/README.md +++ b/briar-headless/README.md @@ -69,7 +69,8 @@ Returns a JSON array of contacts: "handshakePublicKey": "XnYRd7a7E4CTqgAvh4hCxh/YZ0EPscxknB9ZcEOpSzY=", "verified": true, "lastChatActivity": 1557838312175, - "connected": false + "connected": false, + "unreadCount": 7 } ``` diff --git a/briar-headless/src/main/java/org/briarproject/briar/headless/contact/ContactControllerImpl.kt b/briar-headless/src/main/java/org/briarproject/briar/headless/contact/ContactControllerImpl.kt index 4cffe0d96..b7e542b61 100644 --- a/briar-headless/src/main/java/org/briarproject/briar/headless/contact/ContactControllerImpl.kt +++ b/briar-headless/src/main/java/org/briarproject/briar/headless/contact/ContactControllerImpl.kt @@ -77,7 +77,8 @@ constructor( val contacts = contactManager.contacts.map { contact -> val latestMsgTime = conversationManager.getGroupCount(contact.id).latestMsgTime val connected = connectionRegistry.isConnected(contact.id) - contact.output(latestMsgTime, connected) + val unreadCount = conversationManager.getGroupCount(contact.id).unreadCount + contact.output(latestMsgTime, connected, unreadCount) } return ctx.json(contacts) } diff --git a/briar-headless/src/main/java/org/briarproject/briar/headless/contact/OutputContact.kt b/briar-headless/src/main/java/org/briarproject/briar/headless/contact/OutputContact.kt index 2d8656047..d0fbd8dd5 100644 --- a/briar-headless/src/main/java/org/briarproject/briar/headless/contact/OutputContact.kt +++ b/briar-headless/src/main/java/org/briarproject/briar/headless/contact/OutputContact.kt @@ -7,12 +7,13 @@ import org.briarproject.bramble.api.plugin.event.ContactDisconnectedEvent import org.briarproject.bramble.identity.output import org.briarproject.briar.headless.json.JsonDict -internal fun Contact.output(latestMsgTime: Long, connected: Boolean) = JsonDict( +internal fun Contact.output(latestMsgTime: Long, connected: Boolean, unreadCount: Int) = JsonDict( "contactId" to id.int, "author" to author.output(), "verified" to isVerified, "lastChatActivity" to latestMsgTime, - "connected" to connected + "connected" to connected, + "unreadCount" to unreadCount ).apply { alias?.let { put("alias", it) } handshakePublicKey?.let { put("handshakePublicKey", it.encoded) } diff --git a/briar-headless/src/test/java/org/briarproject/briar/headless/ControllerTest.kt b/briar-headless/src/test/java/org/briarproject/briar/headless/ControllerTest.kt index 7e16d71af..ed4aa8384 100644 --- a/briar-headless/src/test/java/org/briarproject/briar/headless/ControllerTest.kt +++ b/briar-headless/src/test/java/org/briarproject/briar/headless/ControllerTest.kt @@ -46,6 +46,7 @@ abstract class ControllerTest { protected val message: Message = getMessage(group.id) protected val text: String = getRandomString(5) protected val timestamp = 42L + protected val unreadCount = 42 protected fun assertJsonEquals(json: String, obj: Any) { assertEquals(json, outputCtx.json(obj).resultString(), STRICT) diff --git a/briar-headless/src/test/java/org/briarproject/briar/headless/contact/ContactControllerTest.kt b/briar-headless/src/test/java/org/briarproject/briar/headless/contact/ContactControllerTest.kt index 59ee3c06a..a169e8eef 100644 --- a/briar-headless/src/test/java/org/briarproject/briar/headless/contact/ContactControllerTest.kt +++ b/briar-headless/src/test/java/org/briarproject/briar/headless/contact/ContactControllerTest.kt @@ -58,7 +58,8 @@ internal class ContactControllerTest : ControllerTest() { every { contactManager.contacts } returns listOf(contact) every { conversationManager.getGroupCount(contact.id).latestMsgTime } returns timestamp every { connectionRegistry.isConnected(contact.id) } returns connected - every { ctx.json(listOf(contact.output(timestamp, connected))) } returns ctx + every { conversationManager.getGroupCount(contact.id).unreadCount } returns unreadCount + every { ctx.json(listOf(contact.output(timestamp, connected, unreadCount))) } returns ctx controller.list(ctx) } @@ -313,10 +314,11 @@ internal class ContactControllerTest : ControllerTest() { "handshakePublicKey": ${toJson(contact.handshakePublicKey!!.encoded)}, "verified": ${contact.isVerified}, "lastChatActivity": $timestamp, - "connected": $connected + "connected": $connected, + "unreadCount": $unreadCount } """ - assertJsonEquals(json, contact.output(timestamp, connected)) + assertJsonEquals(json, contact.output(timestamp, connected, unreadCount)) } @Test