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..47211f165 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,22 @@ 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/conversationinfoedit/ConversationInfoEditActivity.kt b/app/src/main/java/com/nextcloud/talk/conversationinfoedit/ConversationInfoEditActivity.kt index ab72e226c..c9f30f91b 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,12 @@ class ConversationInfoEditActivity : BaseActivity() { pickImage = PickImage(this, conversationUser) + val max = CapabilitiesUtil.conversationDescriptionLength(conversationUser.capabilities?.spreedCapability!!) + binding.conversationDescription.filters = arrayOf( + InputFilter.LengthFilter(max) + ) + binding.conversationDescriptionInputLayout.counterMaxLength = max + initObservers() } @@ -277,7 +284,7 @@ class ConversationInfoEditActivity : BaseActivity() { ) } - fun saveConversationDescription() { + private fun saveConversationDescription() { val conversationDescription = binding.conversationDescription.text.toString() conversationInfoEditViewModel.setConversationDescription(conversation!!.token, conversationDescription) } 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..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,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 } 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">