From cea66cf37d56256187673590ccefa1514f7a31c0 Mon Sep 17 00:00:00 2001
From: Janne Koschinski <janne@kuschku.de>
Date: Fri, 8 Jun 2018 19:20:57 +0200
Subject: [PATCH] Hide disconnect button and clients list if features are
 unavailable

---
 .../quasseldroid/ui/chat/info/core/ClientAdapter.kt  |  2 ++
 .../ui/chat/info/core/CoreInfoFragment.kt            | 12 ++++++------
 app/src/main/res/layout/fragment_info_core.xml       |  6 ++++--
 3 files changed, 12 insertions(+), 8 deletions(-)

diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/core/ClientAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/core/ClientAdapter.kt
index 699643818..c31f492dd 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/core/ClientAdapter.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/core/ClientAdapter.kt
@@ -13,6 +13,7 @@ import android.widget.ImageView
 import android.widget.TextView
 import butterknife.BindView
 import butterknife.ButterKnife
+import de.kuschku.libquassel.quassel.ExtendedFeature
 import de.kuschku.libquassel.quassel.syncables.CoreInfo
 import de.kuschku.quasseldroid.R
 import de.kuschku.quasseldroid.util.helper.getVectorDrawableCompat
@@ -102,6 +103,7 @@ class ClientAdapter : ListAdapter<CoreInfo.ConnectedClientData, ClientAdapter.Cl
       location.visibleIf(data.location.isNotBlank())
 
       secureIcon.setImageDrawable(if (data.secure) secure else insecure)
+      disconnect.visibleIf(data.features.hasFeature(ExtendedFeature.RemoteDisconnect))
     }
   }
 }
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/core/CoreInfoFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/core/CoreInfoFragment.kt
index 0b5af2034..a6a356a5d 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/core/CoreInfoFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/core/CoreInfoFragment.kt
@@ -51,15 +51,15 @@ class CoreInfoFragment : ServiceBoundFragment() {
   @BindView(R.id.uptime)
   lateinit var uptime: TextView
 
-  @BindView(R.id.secure_container)
-  lateinit var secureContainer: View
-
   @BindView(R.id.secure)
   lateinit var secureText: TextView
 
   @BindView(R.id.secure_icon)
   lateinit var secureIcon: ImageView
 
+  @BindView(R.id.clients_title)
+  lateinit var clientsTitle: View
+
   @BindView(R.id.clients)
   lateinit var clients: RecyclerView
 
@@ -97,15 +97,14 @@ class CoreInfoFragment : ServiceBoundFragment() {
       val sslSession = it?.orNull()
       val leafCertificate = sslSession?.peerCertificateChain?.firstOrNull()
       val issuerName = leafCertificate?.issuerDN?.name?.let(X509Helper::commonName)
+                       ?: requireContext().getString(R.string.label_core_connection_verified_by_unknown)
 
       if (sslSession == null) {
         secureText.text = requireContext().getString(R.string.label_core_connection_insecure)
         secureIcon.setImageDrawable(insecure)
       } else {
         secureText.text = requireContext().getString(
-          R.string.label_core_connection_verified_by,
-          issuerName
-          ?: requireContext().getString(R.string.label_core_connection_verified_by_unknown)
+          R.string.label_core_connection_verified_by, issuerName
         )
         secureIcon.setImageDrawable(secure)
       }
@@ -121,6 +120,7 @@ class CoreInfoFragment : ServiceBoundFragment() {
     }
     clients.adapter = adapter
     viewModel.coreInfoClients.toLiveData().observe(this, Observer {
+      clientsTitle.visibleIf(it?.isNotEmpty() == true)
       adapter.submitList(it)
     })
 
diff --git a/app/src/main/res/layout/fragment_info_core.xml b/app/src/main/res/layout/fragment_info_core.xml
index 91f8c8caf..1d432236b 100644
--- a/app/src/main/res/layout/fragment_info_core.xml
+++ b/app/src/main/res/layout/fragment_info_core.xml
@@ -78,7 +78,6 @@
       android:text="@string/label_core_security" />
 
     <LinearLayout
-      android:id="@+id/secure_container"
       style="@style/Widget.Info.Item"
       android:orientation="horizontal">
 
@@ -104,8 +103,11 @@
       android:background="?colorDivider" />
 
     <TextView
+      android:id="@+id/clients_title"
       style="@style/Widget.Info.Section"
-      android:text="@string/label_core_clients" />
+      android:text="@string/label_core_clients"
+      android:visibility="gone"
+      tools:visibility="visible" />
 
     <android.support.v7.widget.RecyclerView
       android:id="@+id/clients"
-- 
GitLab