From f25ca2d00b4e3ceb84d55429f93e229a8e41332c Mon Sep 17 00:00:00 2001 From: sowjanyakch Date: Mon, 27 Jan 2025 15:28:19 +0100 Subject: [PATCH 1/7] calculate conversation description length Signed-off-by: sowjanyakch --- .../java/com/nextcloud/talk/utils/CapabilitiesUtil.kt | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/app/src/main/java/com/nextcloud/talk/utils/CapabilitiesUtil.kt b/app/src/main/java/com/nextcloud/talk/utils/CapabilitiesUtil.kt index a6fe48e012..a7375bd12b 100644 --- a/app/src/main/java/com/nextcloud/talk/utils/CapabilitiesUtil.kt +++ b/app/src/main/java/com/nextcloud/talk/utils/CapabilitiesUtil.kt @@ -121,6 +121,16 @@ object CapabilitiesUtil { return DEFAULT_CHAT_SIZE } + fun conversationDescriptionLength(spreedCapabilities: SpreedCapability):Int{ + if(spreedCapabilities.config?.containsKey("conversations") == true){ + val map: Map? = spreedCapabilities.config!!["conversations"] + if (map != null && map.containsKey("description-length")) { + return (map["description-length"].toString().toInt()) + } + } + return CONVERSATION_DESCRIPTION_LENGTH_FOR_OLD_SERVER + } + fun isReadStatusAvailable(spreedCapabilities: SpreedCapability): Boolean { if (spreedCapabilities.config?.containsKey("chat") == true) { val map: Map? = spreedCapabilities.config!!["chat"] @@ -287,4 +297,5 @@ object CapabilitiesUtil { const val RECORDING_CONSENT_DEPEND_ON_CONVERSATION = 2 private const val SERVER_VERSION_MIN_SUPPORTED = 17 private const val SERVER_VERSION_SUPPORT_WARNING = 26 + private const val CONVERSATION_DESCRIPTION_LENGTH_FOR_OLD_SERVER = 500 } From 1aa44ed8409429143e540cb06c9bc3edfb44bc40 Mon Sep 17 00:00:00 2001 From: sowjanyakch Date: Mon, 27 Jan 2025 15:34:16 +0100 Subject: [PATCH 2/7] set limit on conversation description Signed-off-by: sowjanyakch --- .../conversationcreation/ConversationCreationViewModel.kt | 5 ++++- .../conversationinfoedit/ConversationInfoEditActivity.kt | 4 +++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/conversationcreation/ConversationCreationViewModel.kt b/app/src/main/java/com/nextcloud/talk/conversationcreation/ConversationCreationViewModel.kt index 239bedf3fa..817798ccc7 100644 --- a/app/src/main/java/com/nextcloud/talk/conversationcreation/ConversationCreationViewModel.kt +++ b/app/src/main/java/com/nextcloud/talk/conversationcreation/ConversationCreationViewModel.kt @@ -19,6 +19,7 @@ import com.nextcloud.talk.models.json.conversations.Conversation import com.nextcloud.talk.models.json.generic.GenericMeta import com.nextcloud.talk.repositories.conversations.ConversationsRepositoryImpl.Companion.STATUS_CODE_OK import com.nextcloud.talk.users.UserManager +import com.nextcloud.talk.utils.CapabilitiesUtil import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.launch @@ -72,9 +73,11 @@ class ConversationCreationViewModel @Inject constructor( } fun updateConversationDescription(conversationDescription: String) { - _conversationDescription.value = conversationDescription + _conversationDescription.value = conversationDescription.take( + CapabilitiesUtil.conversationDescriptionLength(currentUser.capabilities?.spreedCapability!!)) } + @Suppress("Detekt.TooGenericExceptionCaught") fun createRoomAndAddParticipants( roomType: String, diff --git a/app/src/main/java/com/nextcloud/talk/conversationinfoedit/ConversationInfoEditActivity.kt b/app/src/main/java/com/nextcloud/talk/conversationinfoedit/ConversationInfoEditActivity.kt index ab72e226c9..7d489873ad 100644 --- a/app/src/main/java/com/nextcloud/talk/conversationinfoedit/ConversationInfoEditActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/conversationinfoedit/ConversationInfoEditActivity.kt @@ -279,7 +279,9 @@ class ConversationInfoEditActivity : BaseActivity() { fun saveConversationDescription() { val conversationDescription = binding.conversationDescription.text.toString() - conversationInfoEditViewModel.setConversationDescription(conversation!!.token, conversationDescription) + val maxLengthConversationDescription = conversationDescription.take(CapabilitiesUtil + .conversationDescriptionLength(spreedCapabilities)) + conversationInfoEditViewModel.setConversationDescription(conversation!!.token, maxLengthConversationDescription) } private fun handleResult(result: ActivityResult, onResult: (result: ActivityResult) -> Unit) { From df2a7b31d674c45312ef1aea13f2976d63a804a7 Mon Sep 17 00:00:00 2001 From: sowjanyakch Date: Mon, 27 Jan 2025 17:42:40 +0100 Subject: [PATCH 3/7] rename variable Signed-off-by: sowjanyakch --- .../talk/conversationinfoedit/ConversationInfoEditActivity.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/conversationinfoedit/ConversationInfoEditActivity.kt b/app/src/main/java/com/nextcloud/talk/conversationinfoedit/ConversationInfoEditActivity.kt index 7d489873ad..434f5abef8 100644 --- a/app/src/main/java/com/nextcloud/talk/conversationinfoedit/ConversationInfoEditActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/conversationinfoedit/ConversationInfoEditActivity.kt @@ -279,9 +279,9 @@ class ConversationInfoEditActivity : BaseActivity() { fun saveConversationDescription() { val conversationDescription = binding.conversationDescription.text.toString() - val maxLengthConversationDescription = conversationDescription.take(CapabilitiesUtil + val trimConversationDescription = conversationDescription.take(CapabilitiesUtil .conversationDescriptionLength(spreedCapabilities)) - conversationInfoEditViewModel.setConversationDescription(conversation!!.token, maxLengthConversationDescription) + conversationInfoEditViewModel.setConversationDescription(conversation!!.token, trimConversationDescription) } private fun handleResult(result: ActivityResult, onResult: (result: ActivityResult) -> Unit) { From 53fcd670cd4fc4309b3731d6a0e762a8b2d8b93a Mon Sep 17 00:00:00 2001 From: sowjanyakch Date: Mon, 27 Jan 2025 17:45:47 +0100 Subject: [PATCH 4/7] ktlintFormat Signed-off-by: sowjanyakch --- .../conversationcreation/ConversationCreationViewModel.kt | 4 ++-- .../conversationinfoedit/ConversationInfoEditActivity.kt | 6 ++++-- .../main/java/com/nextcloud/talk/utils/CapabilitiesUtil.kt | 4 ++-- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/conversationcreation/ConversationCreationViewModel.kt b/app/src/main/java/com/nextcloud/talk/conversationcreation/ConversationCreationViewModel.kt index 817798ccc7..05021b04f1 100644 --- a/app/src/main/java/com/nextcloud/talk/conversationcreation/ConversationCreationViewModel.kt +++ b/app/src/main/java/com/nextcloud/talk/conversationcreation/ConversationCreationViewModel.kt @@ -74,10 +74,10 @@ class ConversationCreationViewModel @Inject constructor( fun updateConversationDescription(conversationDescription: String) { _conversationDescription.value = conversationDescription.take( - CapabilitiesUtil.conversationDescriptionLength(currentUser.capabilities?.spreedCapability!!)) + CapabilitiesUtil.conversationDescriptionLength(currentUser.capabilities?.spreedCapability!!) + ) } - @Suppress("Detekt.TooGenericExceptionCaught") fun createRoomAndAddParticipants( roomType: String, diff --git a/app/src/main/java/com/nextcloud/talk/conversationinfoedit/ConversationInfoEditActivity.kt b/app/src/main/java/com/nextcloud/talk/conversationinfoedit/ConversationInfoEditActivity.kt index 434f5abef8..9e8679f3be 100644 --- a/app/src/main/java/com/nextcloud/talk/conversationinfoedit/ConversationInfoEditActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/conversationinfoedit/ConversationInfoEditActivity.kt @@ -279,8 +279,10 @@ class ConversationInfoEditActivity : BaseActivity() { fun saveConversationDescription() { val conversationDescription = binding.conversationDescription.text.toString() - val trimConversationDescription = conversationDescription.take(CapabilitiesUtil - .conversationDescriptionLength(spreedCapabilities)) + val trimConversationDescription = conversationDescription.take( + CapabilitiesUtil + .conversationDescriptionLength(spreedCapabilities) + ) conversationInfoEditViewModel.setConversationDescription(conversation!!.token, trimConversationDescription) } diff --git a/app/src/main/java/com/nextcloud/talk/utils/CapabilitiesUtil.kt b/app/src/main/java/com/nextcloud/talk/utils/CapabilitiesUtil.kt index a7375bd12b..90fdbe322d 100644 --- a/app/src/main/java/com/nextcloud/talk/utils/CapabilitiesUtil.kt +++ b/app/src/main/java/com/nextcloud/talk/utils/CapabilitiesUtil.kt @@ -121,8 +121,8 @@ object CapabilitiesUtil { return DEFAULT_CHAT_SIZE } - fun conversationDescriptionLength(spreedCapabilities: SpreedCapability):Int{ - if(spreedCapabilities.config?.containsKey("conversations") == true){ + fun conversationDescriptionLength(spreedCapabilities: SpreedCapability): Int { + if (spreedCapabilities.config?.containsKey("conversations") == true) { val map: Map? = spreedCapabilities.config!!["conversations"] if (map != null && map.containsKey("description-length")) { return (map["description-length"].toString().toInt()) From aa2ef3c8b47e2dd19f0d4acf9d2441b835e36422 Mon Sep 17 00:00:00 2001 From: sowjanyakch Date: Wed, 29 Jan 2025 22:18:50 +0100 Subject: [PATCH 5/7] set limit on description Signed-off-by: sowjanyakch --- .../ConversationCreationActivity.kt | 9 ++++++++- .../ConversationCreationViewModel.kt | 5 +---- .../ConversationInfoEditActivity.kt | 14 ++++++++------ 3 files changed, 17 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/conversationcreation/ConversationCreationActivity.kt b/app/src/main/java/com/nextcloud/talk/conversationcreation/ConversationCreationActivity.kt index b45db2f035..f7df3b2663 100644 --- a/app/src/main/java/com/nextcloud/talk/conversationcreation/ConversationCreationActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/conversationcreation/ConversationCreationActivity.kt @@ -90,6 +90,7 @@ import com.nextcloud.talk.chat.ChatActivity import com.nextcloud.talk.contacts.ContactsActivityCompose import com.nextcloud.talk.contacts.loadImage import com.nextcloud.talk.models.json.autocomplete.AutocompleteUser +import com.nextcloud.talk.utils.CapabilitiesUtil import com.nextcloud.talk.utils.PickImage import com.nextcloud.talk.utils.bundle.BundleKeys import javax.inject.Inject @@ -342,7 +343,13 @@ fun ConversationNameAndDescription(conversationCreationViewModel: ConversationCr OutlinedTextField( value = conversationDescription.value, onValueChange = { - conversationCreationViewModel.updateConversationDescription(it) + if(it.length > CapabilitiesUtil.conversationDescriptionLength(conversationCreationViewModel.currentUser + .capabilities?.spreedCapability!!)){ + conversationCreationViewModel.updateConversationDescription(it.take(CapabilitiesUtil.conversationDescriptionLength(conversationCreationViewModel.currentUser + .capabilities?.spreedCapability!!))) + }else{ + conversationCreationViewModel.updateConversationDescription(it) + } }, label = { Text(text = stringResource(id = R.string.nc_conversation_description)) }, modifier = Modifier diff --git a/app/src/main/java/com/nextcloud/talk/conversationcreation/ConversationCreationViewModel.kt b/app/src/main/java/com/nextcloud/talk/conversationcreation/ConversationCreationViewModel.kt index 05021b04f1..239bedf3fa 100644 --- a/app/src/main/java/com/nextcloud/talk/conversationcreation/ConversationCreationViewModel.kt +++ b/app/src/main/java/com/nextcloud/talk/conversationcreation/ConversationCreationViewModel.kt @@ -19,7 +19,6 @@ import com.nextcloud.talk.models.json.conversations.Conversation import com.nextcloud.talk.models.json.generic.GenericMeta import com.nextcloud.talk.repositories.conversations.ConversationsRepositoryImpl.Companion.STATUS_CODE_OK import com.nextcloud.talk.users.UserManager -import com.nextcloud.talk.utils.CapabilitiesUtil import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.launch @@ -73,9 +72,7 @@ class ConversationCreationViewModel @Inject constructor( } fun updateConversationDescription(conversationDescription: String) { - _conversationDescription.value = conversationDescription.take( - CapabilitiesUtil.conversationDescriptionLength(currentUser.capabilities?.spreedCapability!!) - ) + _conversationDescription.value = conversationDescription } @Suppress("Detekt.TooGenericExceptionCaught") diff --git a/app/src/main/java/com/nextcloud/talk/conversationinfoedit/ConversationInfoEditActivity.kt b/app/src/main/java/com/nextcloud/talk/conversationinfoedit/ConversationInfoEditActivity.kt index 9e8679f3be..794acf2674 100644 --- a/app/src/main/java/com/nextcloud/talk/conversationinfoedit/ConversationInfoEditActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/conversationinfoedit/ConversationInfoEditActivity.kt @@ -10,6 +10,7 @@ package com.nextcloud.talk.conversationinfoedit import android.app.Activity import android.graphics.drawable.ColorDrawable import android.os.Bundle +import android.text.InputFilter import android.text.TextUtils import android.util.Log import android.view.Menu @@ -118,6 +119,11 @@ class ConversationInfoEditActivity : BaseActivity() { pickImage = PickImage(this, conversationUser) + binding.conversationDescription.filters = arrayOf( + InputFilter.LengthFilter(CapabilitiesUtil.conversationDescriptionLength(conversationUser + .capabilities?.spreedCapability!!)) + ) + initObservers() } @@ -277,13 +283,9 @@ class ConversationInfoEditActivity : BaseActivity() { ) } - fun saveConversationDescription() { + private fun saveConversationDescription() { val conversationDescription = binding.conversationDescription.text.toString() - val trimConversationDescription = conversationDescription.take( - CapabilitiesUtil - .conversationDescriptionLength(spreedCapabilities) - ) - conversationInfoEditViewModel.setConversationDescription(conversation!!.token, trimConversationDescription) + conversationInfoEditViewModel.setConversationDescription(conversation!!.token, conversationDescription) } private fun handleResult(result: ActivityResult, onResult: (result: ActivityResult) -> Unit) { From c7fd1268c46826cdf4dc2cc19d9b32c3cfd0ca49 Mon Sep 17 00:00:00 2001 From: sowjanyakch Date: Thu, 30 Jan 2025 10:32:51 +0100 Subject: [PATCH 6/7] ktlintFormat Signed-off-by: sowjanyakch --- .../ConversationCreationActivity.kt | 19 ++++++++++++++----- .../ConversationInfoEditActivity.kt | 8 ++++++-- 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/conversationcreation/ConversationCreationActivity.kt b/app/src/main/java/com/nextcloud/talk/conversationcreation/ConversationCreationActivity.kt index f7df3b2663..47211f165a 100644 --- a/app/src/main/java/com/nextcloud/talk/conversationcreation/ConversationCreationActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/conversationcreation/ConversationCreationActivity.kt @@ -343,11 +343,20 @@ fun ConversationNameAndDescription(conversationCreationViewModel: ConversationCr OutlinedTextField( value = conversationDescription.value, onValueChange = { - if(it.length > CapabilitiesUtil.conversationDescriptionLength(conversationCreationViewModel.currentUser - .capabilities?.spreedCapability!!)){ - conversationCreationViewModel.updateConversationDescription(it.take(CapabilitiesUtil.conversationDescriptionLength(conversationCreationViewModel.currentUser - .capabilities?.spreedCapability!!))) - }else{ + if (it.length > CapabilitiesUtil.conversationDescriptionLength( + conversationCreationViewModel.currentUser + .capabilities?.spreedCapability!! + ) + ) { + conversationCreationViewModel.updateConversationDescription( + it.take( + CapabilitiesUtil.conversationDescriptionLength( + conversationCreationViewModel.currentUser + .capabilities?.spreedCapability!! + ) + ) + ) + } else { conversationCreationViewModel.updateConversationDescription(it) } }, diff --git a/app/src/main/java/com/nextcloud/talk/conversationinfoedit/ConversationInfoEditActivity.kt b/app/src/main/java/com/nextcloud/talk/conversationinfoedit/ConversationInfoEditActivity.kt index 794acf2674..df066c2f68 100644 --- a/app/src/main/java/com/nextcloud/talk/conversationinfoedit/ConversationInfoEditActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/conversationinfoedit/ConversationInfoEditActivity.kt @@ -120,8 +120,12 @@ class ConversationInfoEditActivity : BaseActivity() { pickImage = PickImage(this, conversationUser) binding.conversationDescription.filters = arrayOf( - InputFilter.LengthFilter(CapabilitiesUtil.conversationDescriptionLength(conversationUser - .capabilities?.spreedCapability!!)) + InputFilter.LengthFilter( + CapabilitiesUtil.conversationDescriptionLength( + conversationUser + .capabilities?.spreedCapability!! + ) + ) ) initObservers() From 6aeab6c137b8405cec603528b83f20e139e89c76 Mon Sep 17 00:00:00 2001 From: rapterjet2004 Date: Mon, 3 Feb 2025 14:01:58 -0600 Subject: [PATCH 7/7] Added character counter to xml Signed-off-by: rapterjet2004 --- .../conversationinfoedit/ConversationInfoEditActivity.kt | 9 +++------ .../main/res/layout/activity_conversation_info_edit.xml | 2 ++ 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/conversationinfoedit/ConversationInfoEditActivity.kt b/app/src/main/java/com/nextcloud/talk/conversationinfoedit/ConversationInfoEditActivity.kt index df066c2f68..c9f30f91bb 100644 --- a/app/src/main/java/com/nextcloud/talk/conversationinfoedit/ConversationInfoEditActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/conversationinfoedit/ConversationInfoEditActivity.kt @@ -119,14 +119,11 @@ class ConversationInfoEditActivity : BaseActivity() { pickImage = PickImage(this, conversationUser) + val max = CapabilitiesUtil.conversationDescriptionLength(conversationUser.capabilities?.spreedCapability!!) binding.conversationDescription.filters = arrayOf( - InputFilter.LengthFilter( - CapabilitiesUtil.conversationDescriptionLength( - conversationUser - .capabilities?.spreedCapability!! - ) - ) + InputFilter.LengthFilter(max) ) + binding.conversationDescriptionInputLayout.counterMaxLength = max initObservers() } diff --git a/app/src/main/res/layout/activity_conversation_info_edit.xml b/app/src/main/res/layout/activity_conversation_info_edit.xml index a1ca3bf93a..914d30b6bf 100644 --- a/app/src/main/res/layout/activity_conversation_info_edit.xml +++ b/app/src/main/res/layout/activity_conversation_info_edit.xml @@ -138,12 +138,14 @@ app:boxStrokeColor="@color/colorPrimary" app:errorTextAppearance="@style/ErrorAppearance" app:hintTextColor="@color/colorPrimary" + app:counterEnabled="true" android:hint="@string/nc_conversation_description">