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 e5b4ccd11b9d1406aa5d4f6930d73ee7f9e49bc9..d27f63c2d8514c8540da693f2d67616d31550947 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 576d5597fe6a5e47d04d732ae099a8da68dc0c48..f4fc55739cdedaa4dcd3aea4c4842d7a349af3fb 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 07dcaae9fd40f7b98d887af8b34c141a58755212..262d08e6f5d66c79e57a3e8b7a975f86b787c973 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))