From ba6f70b349ff93eb1dfb428295509aada9c731b4 Mon Sep 17 00:00:00 2001 From: Janne Koschinski <janne@kuschku.de> Date: Thu, 10 Jan 2019 12:29:32 +0100 Subject: [PATCH] =?UTF-8?q?Fixes=20issue=20where=20whitelist=20fragment=20?= =?UTF-8?q?didn=E2=80=99t=20properly=20show=20placeholder?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../whitelist/WhitelistCertificateAdapter.kt | 9 +++++++++ .../whitelist/WhitelistFragment.kt | 17 ++++++++++++----- .../whitelist/WhitelistHostnameAdapter.kt | 10 ++++++++++ 3 files changed, 31 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/whitelist/WhitelistCertificateAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/whitelist/WhitelistCertificateAdapter.kt index e5b4ccd11..d27f63c2d 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/whitelist/WhitelistCertificateAdapter.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/whitelist/WhitelistCertificateAdapter.kt @@ -34,11 +34,16 @@ import de.kuschku.quasseldroid.util.helper.visibleIf class WhitelistCertificateAdapter : RecyclerView.Adapter<WhitelistCertificateAdapter.WhitelistItemViewHolder>() { private var clickListener: ((QuasselDatabase.SslValidityWhitelistEntry) -> Unit)? = null + private var updateListener: ((List<QuasselDatabase.SslValidityWhitelistEntry>) -> Unit)? = null fun setOnClickListener(listener: ((QuasselDatabase.SslValidityWhitelistEntry) -> Unit)?) { clickListener = listener } + fun setOnUpdateListener(listener: ((List<QuasselDatabase.SslValidityWhitelistEntry>) -> Unit)?) { + updateListener = listener + } + private val data = mutableListOf<QuasselDatabase.SslValidityWhitelistEntry>() var list: List<QuasselDatabase.SslValidityWhitelistEntry> get() = data @@ -48,17 +53,20 @@ class WhitelistCertificateAdapter : notifyItemRangeRemoved(0, length) data.addAll(value) notifyItemRangeInserted(0, list.size) + updateListener?.invoke(list) } fun add(item: QuasselDatabase.SslValidityWhitelistEntry) { val index = data.size data.add(item) notifyItemInserted(index) + updateListener?.invoke(list) } fun replace(index: Int, item: QuasselDatabase.SslValidityWhitelistEntry) { data[index] = item notifyItemChanged(index) + updateListener?.invoke(list) } fun indexOf(item: QuasselDatabase.SslValidityWhitelistEntry) = data.indexOf(item) @@ -66,6 +74,7 @@ class WhitelistCertificateAdapter : fun remove(index: Int) { data.removeAt(index) notifyItemRemoved(index) + updateListener?.invoke(list) } fun remove(item: QuasselDatabase.SslValidityWhitelistEntry) = remove(indexOf(item)) diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/whitelist/WhitelistFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/whitelist/WhitelistFragment.kt index 576d5597f..f4fc55739 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/whitelist/WhitelistFragment.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/whitelist/WhitelistFragment.kt @@ -92,17 +92,24 @@ class WhitelistFragment : SettingsFragment(), SettingsFragment.Changeable, hostnameList.addItemDecoration(DividerItemDecoration(context, LinearLayoutManager.VERTICAL)) ViewCompat.setNestedScrollingEnabled(hostnameList, false) + certificateAdapter.setOnUpdateListener { + activity?.runOnUiThread { + certificateListEmpty.visibleIf(it.isNullOrEmpty()) + } + } + + hostnameAdapter.setOnUpdateListener { + activity?.runOnUiThread { + hostnameListEmpty.visibleIf(it.isNullOrEmpty()) + } + } + handler.post { whitelist = Whitelist(database.validityWhitelist().all(), database.hostnameWhitelist().all()) whitelist?.let { certificateAdapter.list = it.certificates hostnameAdapter.list = it.hostnames } - - activity?.runOnUiThread { - certificateListEmpty.visibleIf(whitelist?.certificates.isNullOrEmpty()) - hostnameListEmpty.visibleIf(whitelist?.hostnames.isNullOrEmpty()) - } } return view } diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/whitelist/WhitelistHostnameAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/whitelist/WhitelistHostnameAdapter.kt index 07dcaae9f..262d08e6f 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/whitelist/WhitelistHostnameAdapter.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/whitelist/WhitelistHostnameAdapter.kt @@ -32,6 +32,12 @@ import de.kuschku.quasseldroid.persistence.QuasselDatabase class WhitelistHostnameAdapter : RecyclerView.Adapter<WhitelistHostnameAdapter.WhitelistItemViewHolder>() { + private var updateListener: ((List<QuasselDatabase.SslHostnameWhitelistEntry>) -> Unit)? = null + + fun setOnUpdateListener(listener: ((List<QuasselDatabase.SslHostnameWhitelistEntry>) -> Unit)?) { + updateListener = listener + } + private val data = mutableListOf<QuasselDatabase.SslHostnameWhitelistEntry>() var list: List<QuasselDatabase.SslHostnameWhitelistEntry> get() = data @@ -41,17 +47,20 @@ class WhitelistHostnameAdapter : notifyItemRangeRemoved(0, length) data.addAll(value) notifyItemRangeInserted(0, list.size) + updateListener?.invoke(list) } fun add(item: QuasselDatabase.SslHostnameWhitelistEntry) { val index = data.size data.add(item) notifyItemInserted(index) + updateListener?.invoke(list) } fun replace(index: Int, item: QuasselDatabase.SslHostnameWhitelistEntry) { data[index] = item notifyItemChanged(index) + updateListener?.invoke(list) } fun indexOf(item: QuasselDatabase.SslHostnameWhitelistEntry) = data.indexOf(item) @@ -59,6 +68,7 @@ class WhitelistHostnameAdapter : fun remove(index: Int) { data.removeAt(index) notifyItemRemoved(index) + updateListener?.invoke(list) } fun remove(item: QuasselDatabase.SslHostnameWhitelistEntry) = remove(indexOf(item)) -- GitLab