Selaa lähdekoodia

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>
Marcel Hibbe 1 vuosi sitten
vanhempi
commit
d15d8d29e6

+ 1 - 1
app/src/main/java/com/nextcloud/talk/api/NcApi.java

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

+ 8 - 1
app/src/main/java/com/nextcloud/talk/ui/dialog/ConversationsListBottomDialog.kt

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