From cb1dd8e5b5278875beb56b382eecf30330294aab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tim=20Kr=C3=BCger?= Date: Thu, 10 Mar 2022 16:59:36 +0100 Subject: [PATCH] Avoid empty status message MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Enable the 'Set status message' button only if a message is set. Currently the API don't allow us to set an empty message [1]. See: [1] nextcloud/server#31452 #1839 Signed-off-by: Tim Krüger --- .../talk/ui/dialog/SetStatusDialogFragment.kt | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/ui/dialog/SetStatusDialogFragment.kt b/app/src/main/java/com/nextcloud/talk/ui/dialog/SetStatusDialogFragment.kt index 9ff59a01d..306f3df13 100644 --- a/app/src/main/java/com/nextcloud/talk/ui/dialog/SetStatusDialogFragment.kt +++ b/app/src/main/java/com/nextcloud/talk/ui/dialog/SetStatusDialogFragment.kt @@ -35,6 +35,7 @@ import android.widget.AdapterView import android.widget.AdapterView.OnItemSelectedListener import android.widget.ArrayAdapter import androidx.appcompat.app.AlertDialog +import androidx.core.widget.doAfterTextChanged import androidx.fragment.app.DialogFragment import androidx.recyclerview.widget.LinearLayoutManager import autodagger.AutoInjector @@ -59,6 +60,7 @@ import io.reactivex.Observer import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.disposables.Disposable import io.reactivex.schedulers.Schedulers +import kotlinx.android.synthetic.main.dialog_set_status.* import okhttp3.ResponseBody import java.util.Calendar import java.util.Locale @@ -157,7 +159,8 @@ class SetStatusDialogFragment : currentStatus?.let { binding.emoji.setText(it.icon) binding.customStatusInput.text?.clear() - binding.customStatusInput.setText(it.message) + binding.customStatusInput.setText(it.message?.trim()) + binding.setStatus.isEnabled = it.message?.isEmpty() == false visualizeStatus(it.status) if (it.clearAt > 0) { @@ -231,6 +234,10 @@ class SetStatusDialogFragment : binding.setStatus.setBackgroundColor(resources.getColor(R.color.colorPrimary)) binding.customStatusInput.highlightColor = resources.getColor(R.color.colorPrimary) + + binding.customStatusInput.doAfterTextChanged { text -> + binding.setStatus.isEnabled = !text.isNullOrEmpty() + } } @Suppress("ComplexMethod") @@ -394,7 +401,7 @@ class SetStatusDialogFragment : private fun setStatusMessage() { - val inputText = binding.customStatusInput.text.toString().ifEmpty { " " } + val inputText = binding.customStatusInput.text.toString().ifEmpty { "" } // The endpoint '/message/custom' expects a valid emoji as string or null val statusIcon = binding.emoji.text.toString().ifEmpty { null }