From d15d8d29e6e8c0de2e1bd8e481db2c19931c8663 Mon Sep 17 00:00:00 2001 From: Marcel Hibbe Date: Wed, 20 Mar 2024 13:27:48 +0100 Subject: [PATCH] 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 --- app/src/main/java/com/nextcloud/talk/api/NcApi.java | 2 +- .../talk/ui/dialog/ConversationsListBottomDialog.kt | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/api/NcApi.java b/app/src/main/java/com/nextcloud/talk/api/NcApi.java index c2c65e17c..66e64eccc 100644 --- a/app/src/main/java/com/nextcloud/talk/api/NcApi.java +++ b/app/src/main/java/com/nextcloud/talk/api/NcApi.java @@ -552,7 +552,7 @@ public interface NcApi { @POST Observable 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 diff --git a/app/src/main/java/com/nextcloud/talk/ui/dialog/ConversationsListBottomDialog.kt b/app/src/main/java/com/nextcloud/talk/ui/dialog/ConversationsListBottomDialog.kt index 473527418..dd83374b6 100644 --- a/app/src/main/java/com/nextcloud/talk/ui/dialog/ConversationsListBottomDialog.kt +++ b/app/src/main/java/com/nextcloud/talk/ui/dialog/ConversationsListBottomDialog.kt @@ -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)