From 4802268e2982510d528e819014c974202940636f Mon Sep 17 00:00:00 2001
From: Janne Koschinski <janne@kuschku.de>
Date: Fri, 25 May 2018 00:54:00 +0200
Subject: [PATCH] Fixes crash from #110

---
 .../ui/setup/accounts/edit/AccountEditActivity.kt         | 8 ++++----
 .../setup/accounts/setup/AccountSetupConnectionSlide.kt   | 4 ++--
 .../ui/setup/accounts/setup/AccountSetupNameSlide.kt      | 2 +-
 .../ui/setup/accounts/setup/AccountSetupUserSlide.kt      | 2 +-
 .../quasseldroid/ui/setup/user/UserSetupIdentitySlide.kt  | 2 +-
 .../quasseldroid/ui/setup/user/UserSetupNetworkSlide.kt   | 6 +++---
 .../java/de/kuschku/quasseldroid/util/TextValidator.kt    | 8 ++++++--
 7 files changed, 18 insertions(+), 14 deletions(-)

diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/edit/AccountEditActivity.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/edit/AccountEditActivity.kt
index 3d6364714..1aa9d65f9 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/edit/AccountEditActivity.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/edit/AccountEditActivity.kt
@@ -102,25 +102,25 @@ class AccountEditActivity : DaggerAppCompatActivity() {
     }
 
     nameValidator = object : TextValidator(
-      nameWrapper::setError, resources.getString(R.string.hint_invalid_name)
+      this, nameWrapper::setError, resources.getString(R.string.hint_invalid_name)
     ) {
       override fun validate(text: Editable) = text.isNotBlank()
     }
 
     hostValidator = object : TextValidator(
-      hostWrapper::setError, resources.getString(R.string.hint_invalid_host)
+      this, hostWrapper::setError, resources.getString(R.string.hint_invalid_host)
     ) {
       override fun validate(text: Editable) = text.toString().matches(Patterns.DOMAIN_NAME)
     }
 
     portValidator = object : TextValidator(
-      portWrapper::setError, resources.getString(R.string.hint_invalid_port)
+      this, portWrapper::setError, resources.getString(R.string.hint_invalid_port)
     ) {
       override fun validate(text: Editable) = text.toString().toIntOrNull() in (0 until 65536)
     }
 
     userValidator = object : TextValidator(
-      userWrapper::setError, resources.getString(R.string.hint_invalid_user)
+      this, userWrapper::setError, resources.getString(R.string.hint_invalid_user)
     ) {
       override fun validate(text: Editable) = text.isNotBlank()
     }
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/setup/AccountSetupConnectionSlide.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/setup/AccountSetupConnectionSlide.kt
index 8eeddd2db..8335989c3 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/setup/AccountSetupConnectionSlide.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/setup/AccountSetupConnectionSlide.kt
@@ -71,7 +71,7 @@ class AccountSetupConnectionSlide : SlideFragment() {
     val view = inflater.inflate(R.layout.setup_account_connection, container, false)
     ButterKnife.bind(this, view)
     hostValidator = object : TextValidator(
-      hostWrapper::setError, resources.getString(R.string.hint_invalid_host)
+      requireActivity(), hostWrapper::setError, resources.getString(R.string.hint_invalid_host)
     ) {
       override fun validate(text: Editable) =
         text.toString().matches(Patterns.DOMAIN_NAME)
@@ -79,7 +79,7 @@ class AccountSetupConnectionSlide : SlideFragment() {
       override fun onChanged() = updateValidity()
     }
     portValidator = object : TextValidator(
-      portWrapper::setError, resources.getString(R.string.hint_invalid_port)
+      requireActivity(), portWrapper::setError, resources.getString(R.string.hint_invalid_port)
     ) {
       override fun validate(text: Editable) = text.toString().toIntOrNull() in (0 until 65536)
 
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/setup/AccountSetupNameSlide.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/setup/AccountSetupNameSlide.kt
index 30e6c6a5b..a2529953c 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/setup/AccountSetupNameSlide.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/setup/AccountSetupNameSlide.kt
@@ -60,7 +60,7 @@ class AccountSetupNameSlide : SlideFragment() {
     val view = inflater.inflate(R.layout.setup_account_name, container, false)
     ButterKnife.bind(this, view)
     nameValidator = object : TextValidator(
-      nameWrapper::setError, resources.getString(R.string.hint_invalid_name)
+      requireActivity(), nameWrapper::setError, resources.getString(R.string.hint_invalid_name)
     ) {
       override fun validate(text: Editable) = text.isNotBlank()
 
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/setup/AccountSetupUserSlide.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/setup/AccountSetupUserSlide.kt
index 6238b088f..c09bd2b1e 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/setup/AccountSetupUserSlide.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/setup/AccountSetupUserSlide.kt
@@ -69,7 +69,7 @@ class AccountSetupUserSlide : SlideFragment() {
     val view = inflater.inflate(R.layout.setup_account_user, container, false)
     ButterKnife.bind(this, view)
     userValidator = object : TextValidator(
-      userWrapper::setError, resources.getString(R.string.hint_invalid_user)
+      requireActivity(), userWrapper::setError, resources.getString(R.string.hint_invalid_user)
     ) {
       override fun validate(text: Editable) = text.isNotBlank()
 
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/user/UserSetupIdentitySlide.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/user/UserSetupIdentitySlide.kt
index f997f7dbc..75e5aeb3b 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/user/UserSetupIdentitySlide.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/user/UserSetupIdentitySlide.kt
@@ -80,7 +80,7 @@ class UserSetupIdentitySlide : SlideFragment() {
     val view = inflater.inflate(R.layout.setup_user_identity, container, false)
     ButterKnife.bind(this, view)
     nickValidator = object : TextValidator(
-      nickWrapper::setError, resources.getString(R.string.hint_invalid_nick)
+      requireActivity(), nickWrapper::setError, resources.getString(R.string.hint_invalid_nick)
     ) {
       override fun validate(text: Editable) = text.isNotEmpty() && text.matches(Patterns.IRC_NICK)
 
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/user/UserSetupNetworkSlide.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/user/UserSetupNetworkSlide.kt
index f6dab7357..f9d0450ba 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/user/UserSetupNetworkSlide.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/user/UserSetupNetworkSlide.kt
@@ -124,14 +124,14 @@ class UserSetupNetworkSlide : SlideFragment() {
     val view = inflater.inflate(R.layout.setup_user_network, container, false)
     ButterKnife.bind(this, view)
     nameValidator = object : TextValidator(
-      nameWrapper::setError, resources.getString(R.string.hint_invalid_name)
+      requireActivity(), nameWrapper::setError, resources.getString(R.string.hint_invalid_name)
     ) {
       override fun validate(text: Editable) = text.isNotBlank()
 
       override fun onChanged() = updateValidity()
     }
     hostValidator = object : TextValidator(
-      hostWrapper::setError, resources.getString(R.string.hint_invalid_host)
+      requireActivity(), hostWrapper::setError, resources.getString(R.string.hint_invalid_host)
     ) {
       override fun validate(text: Editable) =
         text.toString().matches(Patterns.DOMAIN_NAME)
@@ -139,7 +139,7 @@ class UserSetupNetworkSlide : SlideFragment() {
       override fun onChanged() = updateValidity()
     }
     portValidator = object : TextValidator(
-      portWrapper::setError, resources.getString(R.string.hint_invalid_port)
+      requireActivity(), portWrapper::setError, resources.getString(R.string.hint_invalid_port)
     ) {
       override fun validate(text: Editable) = text.toString().toIntOrNull() in (0 until 65536)
 
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/TextValidator.kt b/app/src/main/java/de/kuschku/quasseldroid/util/TextValidator.kt
index b4ad8989d..ddffa3c42 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/TextValidator.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/TextValidator.kt
@@ -19,14 +19,18 @@
 
 package de.kuschku.quasseldroid.util
 
+import android.app.Activity
 import android.text.Editable
 import android.text.TextWatcher
 
-abstract class TextValidator(private val errorListener: (String?) -> Unit,
+abstract class TextValidator(private val activity: Activity,
+                             private val errorListener: (String?) -> Unit,
                              private val error: String) : TextWatcher {
   override fun afterTextChanged(p0: Editable) {
     isValid = validate(p0)
-    errorListener(if (isValid) null else error)
+    activity.runOnUiThread {
+      errorListener(if (isValid) null else error)
+    }
     onChanged()
   }
 
-- 
GitLab