diff --git a/app/src/main/java/com/nextcloud/talk/controllers/SettingsController.java b/app/src/main/java/com/nextcloud/talk/controllers/SettingsController.java index 07e57b46d..d3ec45b52 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/SettingsController.java +++ b/app/src/main/java/com/nextcloud/talk/controllers/SettingsController.java @@ -305,6 +305,12 @@ public class SettingsController extends BaseController { SwitchAccountController()).pushChangeHandler(new VerticalChangeHandler()) .popChangeHandler(new VerticalChangeHandler())); }); + + if (userUtils.getCurrentUser().isPhoneBookIntegrationAvailable()) { + phoneBookIntegretationPreference.setVisibility(View.VISIBLE); + } else { + phoneBookIntegretationPreference.setVisibility(View.GONE); + } String host = null; int port = -1; diff --git a/app/src/main/java/com/nextcloud/talk/models/database/User.java b/app/src/main/java/com/nextcloud/talk/models/database/User.java index 2bd028c8f..f3bffe15e 100644 --- a/app/src/main/java/com/nextcloud/talk/models/database/User.java +++ b/app/src/main/java/com/nextcloud/talk/models/database/User.java @@ -21,17 +21,19 @@ package com.nextcloud.talk.models.database; import android.os.Parcelable; import android.util.Log; + import com.bluelinelabs.logansquare.LoganSquare; import com.nextcloud.talk.models.json.capabilities.Capabilities; -import io.requery.Entity; -import io.requery.Generated; -import io.requery.Key; -import io.requery.Persistable; import java.io.IOException; import java.io.Serializable; import java.util.HashMap; +import io.requery.Entity; +import io.requery.Generated; +import io.requery.Key; +import io.requery.Persistable; + @Entity public interface User extends Parcelable, Persistable, Serializable { static final String TAG = "UserEntity"; @@ -128,4 +130,20 @@ public interface User extends Parcelable, Persistable, Serializable { } return 1000; } + + default boolean isPhoneBookIntegrationAvailable() { + if (getCapabilities() != null) { + Capabilities capabilities; + try { + capabilities = LoganSquare.parse(getCapabilities(), Capabilities.class); + return capabilities != null && + capabilities.getSpreedCapability() != null && + capabilities.getSpreedCapability().getFeatures() != null && + capabilities.getSpreedCapability().getFeatures().contains("phonebook-search"); + } catch (IOException e) { + e.printStackTrace(); + } + } + return false; + } }