瀏覽代碼

Show phonebook setting only for Talk11 (verified via capability)

Signed-off-by: tobiasKaminsky <tobias@kaminsky.me>
tobiasKaminsky 4 年之前
父節點
當前提交
1496b902bb

+ 6 - 0
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;

+ 22 - 4
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;
+    }
 }