From 231cfef8c3e2a45bb406b13ee0326ad48a3fd4f8 Mon Sep 17 00:00:00 2001 From: Marcel Hibbe Date: Mon, 22 May 2023 14:09:20 +0200 Subject: [PATCH] check capabilities to use/ignore typing indicators Signed-off-by: Marcel Hibbe --- .../com/nextcloud/talk/chat/ChatActivity.kt | 67 ++++++++++--------- .../database/user/CapabilitiesUtilNew.kt | 2 +- 2 files changed, 37 insertions(+), 32 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt b/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt index 37c105900..8b3949a41 100644 --- a/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt @@ -323,20 +323,24 @@ class ChatActivity : private val conversationMessageListener = object : SignalingMessageReceiver.ConversationMessageListener { override fun onStartTyping(session: String) { - var name = webSocketInstance?.getDisplayNameForSession(session) + if (!CapabilitiesUtilNew.isTypingStatusPrivate(conversationUser!!)) { + var name = webSocketInstance?.getDisplayNameForSession(session) - if (name != null && !typingParticipants.contains(session)) { - if (name == "") { - name = context.resources?.getString(R.string.nc_guest)!! + if (name != null && !typingParticipants.contains(session)) { + if (name == "") { + name = context.resources?.getString(R.string.nc_guest)!! + } + typingParticipants[session] = name + updateTypingIndicator() } - typingParticipants[session] = name - updateTypingIndicator() } } override fun onStopTyping(session: String) { - typingParticipants.remove(session) - updateTypingIndicator() + if (!CapabilitiesUtilNew.isTypingStatusPrivate(conversationUser!!)) { + typingParticipants.remove(session) + updateTypingIndicator() + } } } @@ -348,8 +352,8 @@ class ChatActivity : 0 -> typingString = SpannableStringBuilder().append(binding.typingIndicator.text) 1 -> typingString = SpannableStringBuilder() - .bold { append(participantNames[0]) } - .append(WHITESPACE + context.resources?.getString(R.string.typing_is_typing)) + .bold { append(participantNames[0]) } + .append(WHITESPACE + context.resources?.getString(R.string.typing_is_typing)) 2 -> typingString = SpannableStringBuilder() .bold { append(participantNames[0]) } @@ -388,7 +392,7 @@ class ChatActivity : } } - val typingIndicatorHeight = DisplayUtils.convertDpToPixel(20f,context) + val typingIndicatorHeight = DisplayUtils.convertDpToPixel(20f, context) runOnUiThread { if (participantNames.size > 0) { @@ -396,7 +400,6 @@ class ChatActivity : .translationY(binding.messageInputView.y - typingIndicatorHeight) .setInterpolator(AccelerateDecelerateInterpolator()) .duration = TYPING_INDICATOR_ANIMATION_DURATION - } else { binding.typingIndicatorWrapper.animate() .translationY(binding.messageInputView.y) @@ -733,26 +736,28 @@ class ChatActivity : return } - if (typingTimer == null) { - for ((sessionId, participant) in webSocketInstance?.getUserMap()!!) { - val ncSignalingMessage = NCSignalingMessage() - ncSignalingMessage.to = sessionId - ncSignalingMessage.type = "startedTyping" - signalingMessageSender!!.send(ncSignalingMessage) + if (!CapabilitiesUtilNew.isTypingStatusPrivate(conversationUser!!)) { + if (typingTimer == null) { + for ((sessionId, participant) in webSocketInstance?.getUserMap()!!) { + val ncSignalingMessage = NCSignalingMessage() + ncSignalingMessage.to = sessionId + ncSignalingMessage.type = "startedTyping" + signalingMessageSender!!.send(ncSignalingMessage) + } + + typingTimer = object : CountDownTimer(4000, 1000) { + override fun onTick(millisUntilFinished: Long) { + } + + override fun onFinish() { + sendStopTypingMessage() + typingTimer = null + } + }.start() + } else { + typingTimer?.cancel() + typingTimer?.start() } - - typingTimer = object : CountDownTimer(4000, 1000) { - override fun onTick(millisUntilFinished: Long) { - } - - override fun onFinish() { - sendStopTypingMessage() - typingTimer = null - } - }.start() - } else { - typingTimer?.cancel() - typingTimer?.start() } } diff --git a/app/src/main/java/com/nextcloud/talk/utils/database/user/CapabilitiesUtilNew.kt b/app/src/main/java/com/nextcloud/talk/utils/database/user/CapabilitiesUtilNew.kt index 88a2676b9..d8ef399f9 100644 --- a/app/src/main/java/com/nextcloud/talk/utils/database/user/CapabilitiesUtilNew.kt +++ b/app/src/main/java/com/nextcloud/talk/utils/database/user/CapabilitiesUtilNew.kt @@ -103,7 +103,7 @@ object CapabilitiesUtilNew { fun isTypingStatusAvailable(user: User): Boolean { if (user.capabilities?.spreedCapability?.config?.containsKey("chat") == true) { - val map: Map? = user.capabilities!!.spreedCapability!!.config!!["chat"] + val map = user.capabilities!!.spreedCapability!!.config!!["chat"] return map != null && map.containsKey("typing-privacy") } return false