Browse Source

show conversation avatars in chat appbar

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
Marcel Hibbe 2 years ago
parent
commit
dd4b797ef8
1 changed files with 38 additions and 8 deletions
  1. 38 8
      app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt

+ 38 - 8
app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt

@@ -755,6 +755,7 @@ class ChatActivity :
                         downX = event.x
                         showRecordAudioUi(true)
                     }
+
                     MotionEvent.ACTION_CANCEL -> {
                         Log.d(TAG, "ACTION_CANCEL. same as for UP")
                         if (!isVoiceRecordingInProgress || !isRecordAudioPermissionGranted()) {
@@ -765,6 +766,7 @@ class ChatActivity :
                         showRecordAudioUi(false)
                         binding?.messageInputView?.slideToCancelDescription?.x = sliderInitX
                     }
+
                     MotionEvent.ACTION_UP -> {
                         Log.d(TAG, "ACTION_UP. stop recording??")
                         if (!isVoiceRecordingInProgress || !isRecordAudioPermissionGranted()) {
@@ -791,6 +793,7 @@ class ChatActivity :
 
                         binding?.messageInputView?.slideToCancelDescription?.x = sliderInitX
                     }
+
                     MotionEvent.ACTION_MOVE -> {
                         Log.d(TAG, "ACTION_MOVE.")
 
@@ -986,12 +989,22 @@ class ChatActivity :
     }
 
     private fun loadAvatarForStatusBar() {
-        if (isOneToOneConversation()) {
-            val url = ApiUtils.getUrlForAvatar(
-                conversationUser!!.baseUrl,
-                currentConversation!!.name,
-                true
-            )
+        if (isOneToOneConversation() || isGroupConversation() || isPublicConversation()) {
+            var url = ""
+            if (isOneToOneConversation()) {
+                url = ApiUtils.getUrlForAvatar(
+                    conversationUser!!.baseUrl,
+                    currentConversation!!.name,
+                    true
+                )
+            } else if (isGroupConversation() || isPublicConversation()) {
+                url = ApiUtils.getUrlForConversationAvatar(
+                    1,
+                    conversationUser!!.baseUrl,
+                    currentConversation!!.token
+                )
+            }
+
             val target = object : Target {
 
                 private fun setIcon(drawable: Drawable?) {
@@ -1032,8 +1045,13 @@ class ChatActivity :
     }
 
     fun isOneToOneConversation() = currentConversation != null && currentConversation?.type != null &&
-        currentConversation?.type == Conversation.ConversationType
-        .ROOM_TYPE_ONE_TO_ONE_CALL
+        currentConversation?.type == Conversation.ConversationType.ROOM_TYPE_ONE_TO_ONE_CALL
+
+    private fun isGroupConversation() = currentConversation != null && currentConversation?.type != null &&
+        currentConversation?.type == Conversation.ConversationType.ROOM_GROUP_CALL
+
+    private fun isPublicConversation() = currentConversation != null && currentConversation?.type != null &&
+        currentConversation?.type == Conversation.ConversationType.ROOM_PUBLIC_CALL
 
     private fun switchToRoom(token: String, startCallAfterRoomSwitch: Boolean, isVoiceOnlyCall: Boolean) {
         if (conversationUser != null) {
@@ -1585,6 +1603,7 @@ class ChatActivity :
                         }
                 }
             }
+
             REQUEST_CODE_CHOOSE_FILE -> {
                 try {
                     checkNotNull(intent)
@@ -1612,6 +1631,7 @@ class ChatActivity :
                         1 -> context.resources?.getString(R.string.nc_upload_confirm_send_single)?.let {
                             String.format(it, title.trim())
                         }
+
                         else -> context.resources?.getString(R.string.nc_upload_confirm_send_multiple)?.let {
                             String.format(it, title.trim())
                         }
@@ -1651,6 +1671,7 @@ class ChatActivity :
                     Log.e(javaClass.simpleName, "Something went wrong when trying to upload file", e)
                 }
             }
+
             REQUEST_CODE_SELECT_CONTACT -> {
                 val contactUri = intent?.data ?: return
                 val cursor: Cursor? = contentResolver!!.query(contactUri, null, null, null, null)
@@ -1670,6 +1691,7 @@ class ChatActivity :
                 }
                 cursor?.close()
             }
+
             REQUEST_CODE_PICK_CAMERA -> {
                 if (resultCode == RESULT_OK) {
                     try {
@@ -1713,6 +1735,7 @@ class ChatActivity :
                     }
                 }
             }
+
             REQUEST_CODE_MESSAGE_SEARCH -> {
                 val messageId = intent?.getStringExtra(MessageSearchActivity.RESULT_KEY_MESSAGE_ID)
                 messageId?.let { id ->
@@ -2340,6 +2363,7 @@ class ChatActivity :
                                 pullChatMessages(true, setReadMarker, xChatLastCommonRead)
                             }
                         }
+
                         HTTP_CODE_PRECONDITION_FAILED -> {
                             Log.d(TAG, "pullChatMessages - HTTP_CODE_PRECONDITION_FAILED.")
 
@@ -2349,6 +2373,7 @@ class ChatActivity :
                                 pastPreconditionFailed = true
                             }
                         }
+
                         HTTP_CODE_OK -> {
                             Log.d(TAG, "pullChatMessages - HTTP_CODE_OK.")
 
@@ -2763,22 +2788,27 @@ class ChatActivity :
                 startACall(false, false)
                 true
             }
+
             R.id.conversation_voice_call -> {
                 startACall(true, false)
                 true
             }
+
             R.id.conversation_info -> {
                 showConversationInfoScreen()
                 true
             }
+
             R.id.shared_items -> {
                 showSharedItems()
                 true
             }
+
             R.id.conversation_search -> {
                 startMessageSearch()
                 true
             }
+
             else -> super.onOptionsItemSelected(item)
         }
     }