From 39391c8bcaf7553643fd078d5cb8ace4d8d822b4 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 a6fe48e01..a7375bd12 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 b7074c54129d73152809189c42618471772905ec 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 239bedf3f..817798ccc 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 ab72e226c..7d489873a 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 bbedbf569d85a07f7deb0c18611f1bc72326c6f1 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 7d489873a..434f5abef 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 fdcff12bd97a32374dd83f08566c44bef0a16645 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 817798ccc..05021b04f 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 434f5abef..9e8679f3b 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 a7375bd12..90fdbe322 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 ef7831472ff6a591f437e9cd7d5b245f8fecf464 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 b45db2f03..f7df3b266 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 05021b04f..239bedf3f 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 9e8679f3b..794acf267 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 1663fcafdab4dba1f80009840ea915ca24c66d8e 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 f7df3b266..47211f165 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 794acf267..df066c2f6 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 2b309885144067953c8153529ca38624a6914e8a 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 df066c2f6..c9f30f91b 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 a1ca3bf93..914d30b6b 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">