Bläddra i källkod

Avoid empty status message

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 <t@timkrueger.me>
Tim Krüger 3 år sedan
förälder
incheckning
cb1dd8e5b5

+ 9 - 2
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 }