diff --git a/app/src/main/java/org/thoughtcrime/securesms/calls/log/CallEventCache.kt b/app/src/main/java/org/thoughtcrime/securesms/calls/log/CallEventCache.kt index fa463227d6..d057735c9c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/calls/log/CallEventCache.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/calls/log/CallEventCache.kt @@ -98,7 +98,8 @@ class CallEventCache( val child = next() if (child.type == Type.AD_HOC_CALL.code) { - continue + previous() + break } if (parent.peer == child.peer && parent.direction == child.direction && isEventMatch(parent, child) && isWithinTimeout(parent, child)) { diff --git a/app/src/test/java/org/thoughtcrime/securesms/calls/log/CallEventCacheTest.kt b/app/src/test/java/org/thoughtcrime/securesms/calls/log/CallEventCacheTest.kt index 95b8cb41c0..d477a8d8f7 100644 --- a/app/src/test/java/org/thoughtcrime/securesms/calls/log/CallEventCacheTest.kt +++ b/app/src/test/java/org/thoughtcrime/securesms/calls/log/CallEventCacheTest.kt @@ -172,6 +172,26 @@ class CallEventCacheTest { assertThat(result).size().isEqualTo(3) } + @Test + fun `Given two call link entries in a row, when I clusterCallEvents, then I expect two entries`() { + val testData = listOf( + createCacheRecord( + callId = 1, + peer = 1, + type = Type.AD_HOC_CALL.code + ), + createCacheRecord( + callId = 2, + peer = 2, + type = Type.AD_HOC_CALL.code + ) + ) + + val filterState = CallEventCache.FilterState() + val result = CallEventCache.clusterCallEvents(testData, filterState) + assertThat(result).size().isEqualTo(2) + } + private fun createCacheRecord( callId: Long, peer: Long = 1,