X-Git-Url: https://git.0d.be/?p=empathy.git;a=blobdiff_plain;f=libempathy%2Fempathy-client-factory.c;h=035c5695625fb5404c8754c4a944d4e86824f811;hp=3794ef60d237d375e25861160e14807664630e92;hb=b5764db7cf39aeaaabc261ece49c57776540a0be;hpb=82b0f4038f7c257253962080270e5625dd5de152 diff --git a/libempathy/empathy-client-factory.c b/libempathy/empathy-client-factory.c index 3794ef60..035c5695 100644 --- a/libempathy/empathy-client-factory.c +++ b/libempathy/empathy-client-factory.c @@ -152,6 +152,33 @@ empathy_client_factory_dup_connection_features (TpSimpleClientFactory *factory, feature = TP_CONNECTION_FEATURE_BALANCE; g_array_append_val (features, feature); + feature = TP_CONNECTION_FEATURE_CONTACT_BLOCKING; + g_array_append_val (features, feature); + + /* Most empathy-* may allow user to add a contact to his contact list. We + * need this property to check if the connection allows it. It's cheap to + * prepare anyway as it will just call GetAll() on the ContactList iface. */ + feature = TP_CONNECTION_FEATURE_CONTACT_LIST_PROPERTIES; + g_array_append_val (features, feature); + + return features; +} + +static GArray * +empathy_client_factory_dup_contact_features (TpSimpleClientFactory *factory, + TpConnection *connection) +{ + GArray *features; + TpContactFeature feature; + + features = chainup->dup_contact_features (factory, connection); + + /* Needed by empathy_individual_add_menu_item_new to check if a contact is + * already in the contact list. This feature is pretty cheap to prepare as + * it doesn't prepare the full roster. */ + feature = TP_CONTACT_FEATURE_SUBSCRIPTION_STATES; + g_array_append_val (features, feature); + return features; } @@ -169,6 +196,9 @@ empathy_client_factory_class_init (EmpathyClientFactoryClass *cls) simple_class->dup_connection_features = empathy_client_factory_dup_connection_features; + + simple_class->dup_contact_features = + empathy_client_factory_dup_contact_features; } static void