浏览代码

hide system messages related to reactions

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
Marcel Hibbe 3 年之前
父节点
当前提交
0b898616a2
共有 1 个文件被更改,包括 15 次插入2 次删除
  1. 15 2
      app/src/main/java/com/nextcloud/talk/controllers/ChatController.kt

+ 15 - 2
app/src/main/java/com/nextcloud/talk/controllers/ChatController.kt

@@ -2087,7 +2087,7 @@ class ChatController(args: Bundle) :
         if (response.code() == HTTP_CODE_OK) {
         if (response.code() == HTTP_CODE_OK) {
 
 
             val chatOverall = response.body() as ChatOverall?
             val chatOverall = response.body() as ChatOverall?
-            val chatMessageList = setDeletionFlagsAndRemoveInfomessages(chatOverall?.ocs!!.data)
+            val chatMessageList = handleSystemMessages(chatOverall?.ocs!!.data)
 
 
             if (chatMessageList.isNotEmpty() &&
             if (chatMessageList.isNotEmpty() &&
                 ChatMessage.SystemMessageType.CLEARED_CHAT == chatMessageList[0].systemMessageType
                 ChatMessage.SystemMessageType.CLEARED_CHAT == chatMessageList[0].systemMessageType
@@ -2336,11 +2336,13 @@ class ChatController(args: Bundle) :
         }
         }
     }
     }
 
 
-    private fun setDeletionFlagsAndRemoveInfomessages(chatMessageList: List<ChatMessage>): List<ChatMessage> {
+    private fun handleSystemMessages(chatMessageList: List<ChatMessage>): List<ChatMessage> {
         val chatMessageMap = chatMessageList.map { it.id to it }.toMap().toMutableMap()
         val chatMessageMap = chatMessageList.map { it.id to it }.toMap().toMutableMap()
         val chatMessageIterator = chatMessageMap.iterator()
         val chatMessageIterator = chatMessageMap.iterator()
         while (chatMessageIterator.hasNext()) {
         while (chatMessageIterator.hasNext()) {
             val currentMessage = chatMessageIterator.next()
             val currentMessage = chatMessageIterator.next()
+
+            // setDeletionFlagsAndRemoveInfomessages
             if (isInfoMessageAboutDeletion(currentMessage)) {
             if (isInfoMessageAboutDeletion(currentMessage)) {
                 if (!chatMessageMap.containsKey(currentMessage.value.parentMessage.id)) {
                 if (!chatMessageMap.containsKey(currentMessage.value.parentMessage.id)) {
                     // if chatMessageMap doesnt't contain message to delete (this happens when lookingIntoFuture),
                     // if chatMessageMap doesnt't contain message to delete (this happens when lookingIntoFuture),
@@ -2351,6 +2353,11 @@ class ChatController(args: Bundle) :
                 }
                 }
                 chatMessageIterator.remove()
                 chatMessageIterator.remove()
             }
             }
+
+            // delete reactions system messages
+            else if (isReactionsMessage(currentMessage)) {
+                chatMessageIterator.remove()
+            }
         }
         }
         return chatMessageMap.values.toList()
         return chatMessageMap.values.toList()
     }
     }
@@ -2360,6 +2367,12 @@ class ChatController(args: Bundle) :
             .SystemMessageType.MESSAGE_DELETED
             .SystemMessageType.MESSAGE_DELETED
     }
     }
 
 
+    private fun isReactionsMessage(currentMessage: MutableMap.MutableEntry<String, ChatMessage>): Boolean {
+        return currentMessage.value.systemMessageType == ChatMessage.SystemMessageType.REACTION ||
+            currentMessage.value.systemMessageType == ChatMessage.SystemMessageType.REACTION_DELETED ||
+            currentMessage.value.systemMessageType == ChatMessage.SystemMessageType.REACTION_REVOKED
+    }
+
     private fun startACall(isVoiceOnlyCall: Boolean) {
     private fun startACall(isVoiceOnlyCall: Boolean) {
         if (currentConversation?.canStartCall == false && currentConversation?.hasCall == false) {
         if (currentConversation?.canStartCall == false && currentConversation?.hasCall == false) {
             Toast.makeText(context, R.string.startCallForbidden, Toast.LENGTH_LONG).show()
             Toast.makeText(context, R.string.startCallForbidden, Toast.LENGTH_LONG).show()