fix to mark federated rooms as read

As lastMessageId is not available for federatedRooms, the API on server side now allows the messageID to be optional. This is done by this commit: messageId is null when it's a federated room.

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
This commit is contained in:
Marcel Hibbe 2024-03-20 13:27:48 +01:00
parent 4150d8e4eb
commit d15d8d29e6
No known key found for this signature in database
GPG Key ID: C793F8B59F43CE7B
2 changed files with 9 additions and 2 deletions

View File

@ -552,7 +552,7 @@ public interface NcApi {
@POST
Observable<GenericOverall> setChatReadMarker(@Header("Authorization") String authorization,
@Url String url,
@Field("lastReadMessage") int lastReadMessage);
@Nullable @Field("lastReadMessage") Integer lastReadMessage);
// Url is: /api/{apiVersion}/chat/{token}/read
@DELETE

View File

@ -308,6 +308,12 @@ class ConversationsListBottomDialog(
}
private fun markConversationAsRead() {
val messageId = if (conversation.remoteServer.isNullOrEmpty()) {
conversation.lastMessage!!.jsonMessageId
} else {
null
}
ncApi.setChatReadMarker(
credentials,
ApiUtils.getUrlForChatReadMarker(
@ -315,7 +321,7 @@ class ConversationsListBottomDialog(
currentUser.baseUrl!!,
conversation.token!!
),
conversation.lastMessage!!.jsonMessageId
messageId
)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
@ -360,6 +366,7 @@ class ConversationsListBottomDialog(
)
}
}
private fun leaveConversation() {
val dataBuilder = Data.Builder()
dataBuilder.putString(KEY_ROOM_TOKEN, conversation.token)