Skip to content

Commit 03461bc

Browse files
committed
Rename MessageReceiptReporter.init to start and add logging
1 parent 76c9e26 commit 03461bc

File tree

2 files changed

+37
-33
lines changed

2 files changed

+37
-33
lines changed

stream-chat-android-client/src/main/java/io/getstream/chat/android/client/receipts/MessageReceiptReporter.kt

Lines changed: 32 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -38,38 +38,42 @@ internal class MessageReceiptReporter(
3838

3939
private val logger by taggedLogger("Chat:MessageReceiptReporter")
4040

41-
fun init() {
42-
logger.d { "Initializing" }
41+
fun start() {
42+
logger.d { "Starting reporter" }
4343
scope.launch {
44-
while (isActive) {
45-
val messages = messageReceiptRepository.getAllMessageReceiptsByType(
46-
type = MessageReceipt.TYPE_DELIVERY,
47-
limit = MAX_BATCH_SIZE,
48-
).map { receipt ->
49-
Message(
50-
id = receipt.messageId,
51-
cid = receipt.cid,
52-
)
53-
}
44+
try {
45+
while (isActive) {
46+
val messages = messageReceiptRepository.getAllMessageReceiptsByType(
47+
type = MessageReceipt.TYPE_DELIVERY,
48+
limit = MAX_BATCH_SIZE,
49+
).map { receipt ->
50+
Message(
51+
id = receipt.messageId,
52+
cid = receipt.cid,
53+
)
54+
}
5455

55-
if (messages.isNotEmpty()) {
56-
logger.d { "Reporting delivery receipts for ${messages.size} messages…" }
57-
chatClient.markMessagesAsDelivered(messages)
58-
.execute()
59-
.onSuccessSuspend {
60-
logger.d { "Successfully reported delivery receipts for ${messages.size} messages" }
61-
val deliveredMessageIds = messages.map(Message::id)
62-
messageReceiptRepository.deleteMessageReceiptsByMessageIds(deliveredMessageIds)
63-
}
64-
.onError { error ->
65-
logger.e {
66-
"Failed to report delivery receipts for ${messages.size} messages: " +
67-
error.message
56+
if (messages.isNotEmpty()) {
57+
logger.d { "Reporting delivery receipts for ${messages.size} messages…" }
58+
chatClient.markMessagesAsDelivered(messages)
59+
.execute()
60+
.onSuccessSuspend {
61+
logger.d { "Successfully reported delivery receipts for ${messages.size} messages" }
62+
val deliveredMessageIds = messages.map(Message::id)
63+
messageReceiptRepository.deleteMessageReceiptsByMessageIds(deliveredMessageIds)
6864
}
69-
}
70-
}
65+
.onError { error ->
66+
logger.e {
67+
"Failed to report delivery receipts for ${messages.size} messages: " +
68+
error.message
69+
}
70+
}
71+
}
7172

72-
delay(REPORT_INTERVAL_IN_MS)
73+
delay(REPORT_INTERVAL_IN_MS)
74+
}
75+
} finally {
76+
logger.d { "Reporter is no longer active" }
7377
}
7478
}
7579
}

stream-chat-android-client/src/test/java/io/getstream/chat/android/client/receipts/MessageReceiptReporterTest.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ internal class MessageReceiptReporterTest {
5959
.givenMarkMessagesAsDelivered(messages)
6060
val sut = fixture.get(backgroundScope)
6161

62-
sut.init()
62+
sut.start()
6363
advanceTimeBy(100) // Allow initial execution
6464

6565
fixture.verifyMarkMessagesAsDeliveredCalled(messages = messages)
@@ -75,7 +75,7 @@ internal class MessageReceiptReporterTest {
7575
.givenMarkMessagesAsDelivered(error = mock())
7676
val sut = fixture.get(backgroundScope)
7777

78-
sut.init()
78+
sut.start()
7979
advanceTimeBy(100) // Allow initial execution
8080

8181
fixture.verifyDeleteByMessageIdsCalled(never())
@@ -94,7 +94,7 @@ internal class MessageReceiptReporterTest {
9494
.givenMessageReceipts(receipts = emptyList())
9595
val sut = fixture.get(backgroundScope)
9696

97-
sut.init()
97+
sut.start()
9898
advanceTimeBy(100) // Allow initial execution
9999

100100
fixture.verifyMarkMessagesAsDeliveredCalled(never())
@@ -108,7 +108,7 @@ internal class MessageReceiptReporterTest {
108108
.givenMarkMessagesAsDelivered()
109109
val sut = fixture.get(backgroundScope)
110110

111-
sut.init()
111+
sut.start()
112112
advanceTimeBy(100) // Allow initial execution
113113

114114
advanceTimeBy(1000) // Advance to the second interval
@@ -127,7 +127,7 @@ internal class MessageReceiptReporterTest {
127127
.givenMarkMessagesAsDelivered()
128128
val sut = fixture.get(backgroundScope)
129129

130-
sut.init()
130+
sut.start()
131131
advanceTimeBy(100) // Allow initial execution
132132

133133
backgroundScope.cancel()

0 commit comments

Comments
 (0)