Private
Public Access
1
0

Implement auto mark as read for conversations

This commit is contained in:
2023-12-10 23:59:34 -08:00
parent 5a672c4b2e
commit 78efe78d4b
5 changed files with 16 additions and 0 deletions

View File

@@ -13,6 +13,7 @@
android:theme="@style/Theme.KordophoneDroid" android:theme="@style/Theme.KordophoneDroid"
android:name=".KordophoneApplication" android:name=".KordophoneApplication"
android:networkSecurityConfig="@xml/network_security_config" android:networkSecurityConfig="@xml/network_security_config"
android:usesCleartextTraffic="true"
tools:targetApi="31"> tools:targetApi="31">
<activity <activity
android:name=".MainActivity" android:name=".MainActivity"

View File

@@ -68,6 +68,7 @@ fun MessageListScreen(
LaunchedEffect(Unit) { LaunchedEffect(Unit) {
Log.d("MessageListScreen", "Launched effect") Log.d("MessageListScreen", "Launched effect")
viewModel.markAsRead()
viewModel.synchronize() viewModel.synchronize()
} }

View File

@@ -83,6 +83,10 @@ class MessageListViewModel @Inject constructor(
return pendingMessages.value.any { it.message.guid == message.guid } return pendingMessages.value.any { it.message.guid == message.guid }
} }
fun markAsRead() = viewModelScope.launch {
repository.markConversationAsRead(conversation!!)
}
fun synchronize() = viewModelScope.launch { fun synchronize() = viewModelScope.launch {
repository.synchronizeConversation(conversation!!) repository.synchronizeConversation(conversation!!)
} }

View File

@@ -47,6 +47,9 @@ interface APIInterface {
@POST("/sendMessage") @POST("/sendMessage")
suspend fun sendMessage(@Body request: SendMessageRequest): Response<SendMessageResponse> suspend fun sendMessage(@Body request: SendMessageRequest): Response<SendMessageResponse>
@POST("/markConversation")
suspend fun markConversation(@Query("guid") conversationGUID: String): Response<Void>
} }
class ResponseDecodeError(val response: ResponseBody): Exception(response.string()) class ResponseDecodeError(val response: ResponseBody): Exception(response.string())

View File

@@ -169,6 +169,13 @@ class ChatRepository(
_errorEncounteredChannel.emit(Error.ConnectionError(e)) _errorEncounteredChannel.emit(Error.ConnectionError(e))
} }
suspend fun markConversationAsRead(conversation: Conversation) = try {
apiInterface.markConversation(conversation.guid)
} catch (e: java.lang.Exception) {
// Don't report via the channel, but log it.
Log.e(REPO_LOG, "Error marking conversation as read: ${e.message}")
}
fun close() { fun close() {
database.close() database.close()
} }