]> git.0d.be Git - empathy.git/commitdiff
Rely on the empathy factory rather than 're-preparing' the AM
authorGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>
Thu, 2 Aug 2012 13:48:38 +0000 (15:48 +0200)
committerGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>
Fri, 3 Aug 2012 14:13:29 +0000 (16:13 +0200)
tp_account_manager_prepare_all_async() seems to be a bad idea so, instead,
let's just rely the empathy factory and set it as default.
This makes the code much more symetric with empathy-accounts and shouldn't
prepare that much useless features as we are not going to prepare the contact
list anyway.

ubuntu-online-accounts/cc-plugins/app-plugin/empathy-app-plugin-widget.c
ubuntu-online-accounts/cc-plugins/app-plugin/empathy-app-plugin.c
ubuntu-online-accounts/cc-plugins/empathy-accounts-plugin-widget.c
ubuntu-online-accounts/cc-plugins/empathy-accounts-plugin.c

index 04cbd7f41686bd8ba37c89277eafa1f0ebff1dc5..d52b3a360b523ca879c19af187d58e516c626af1 100644 (file)
@@ -181,7 +181,7 @@ manager_prepared_cb (GObject *source,
   GList *accounts;
   GError *error = NULL;
 
-  if (!tp_account_manager_prepare_all_finish (manager, result, &error))
+  if (!tp_proxy_prepare_finish (manager, result, &error))
     {
       g_debug ("Error preparing Account Manager: %s", error->message);
       g_clear_error (&error);
@@ -226,7 +226,6 @@ empathy_app_plugin_widget_constructed (GObject *object)
       ((GObjectClass *) empathy_app_plugin_widget_parent_class)->constructed;
   GtkWidget *top;
   TpAccountManager *manager;
-  TpSimpleClientFactory *factory;
 
   if (chain_up != NULL)
     chain_up (object);
@@ -241,22 +240,7 @@ empathy_app_plugin_widget_constructed (GObject *object)
   /* Prepare tp's account manager to find the TpAccount corresponding to our
    * AgAccount */
   manager = tp_account_manager_dup ();
-  factory = tp_proxy_get_factory (manager);
-  tp_simple_client_factory_add_account_features_varargs (factory,
-      TP_ACCOUNT_FEATURE_STORAGE,
-      TP_ACCOUNT_FEATURE_CONNECTION,
-      0);
-  tp_simple_client_factory_add_connection_features_varargs (factory,
-      TP_CONNECTION_FEATURE_AVATAR_REQUIREMENTS,
-      TP_CONNECTION_FEATURE_CONTACT_INFO,
-      0);
-  tp_simple_client_factory_add_contact_features_varargs (factory,
-      TP_CONTACT_FEATURE_ALIAS,
-      TP_CONTACT_FEATURE_AVATAR_DATA,
-      TP_CONTACT_FEATURE_CONTACT_INFO,
-      TP_CONTACT_FEATURE_INVALID,
-      0);
-  tp_account_manager_prepare_all_async (manager,
+  tp_proxy_prepare_async (manager, NULL,
       manager_prepared_cb, g_object_ref (self));
   g_object_unref (manager);
 }
index 43b86ad962f4b18c5f3952afa78707066ef52dbf..c15a13a7ab2edfd3d0aa13be7e16ae8393bac4d0 100644 (file)
@@ -22,6 +22,8 @@
 
 #include "empathy-app-plugin.h"
 
+#include <libempathy/empathy-client-factory.h>
+
 #include "empathy-app-plugin-widget.h"
 
 G_DEFINE_TYPE (EmpathyAppPlugin, empathy_app_plugin, AP_TYPE_APPLICATION_PLUGIN)
@@ -60,6 +62,19 @@ empathy_app_plugin_class_init (EmpathyAppPluginClass *klass)
 static void
 empathy_app_plugin_init (EmpathyAppPlugin *self)
 {
+  if (tp_account_manager_can_set_default ())
+    {
+      EmpathyClientFactory *factory;
+      TpAccountManager *am;
+
+      factory = empathy_client_factory_dup ();
+      am = tp_account_manager_new_with_factory (
+          TP_SIMPLE_CLIENT_FACTORY (factory));
+      tp_account_manager_set_default (am);
+
+      g_object_unref (factory);
+      g_object_unref (am);
+    }
 }
 
 GType
index a17c13821c2666d0f9e657818f21431c5071573e..8a16904fbb526cac46094c789c4a1e9151c803ea 100644 (file)
@@ -289,7 +289,7 @@ manager_prepared_cb (GObject *source,
   GList *accounts;
   GError *error = NULL;
 
-  if (!tp_account_manager_prepare_all_finish (manager, result, &error))
+  if (!tp_proxy_prepare_finish (manager, result, &error))
     {
       g_debug ("Error preparing Account Manager: %s", error->message);
       g_clear_error (&error);
@@ -341,16 +341,12 @@ empathy_accounts_plugin_widget_constructed (GObject *object)
   if (self->priv->account->id != 0)
     {
       TpAccountManager *manager;
-      TpSimpleClientFactory *factory;
 
       /* Prepare tp's account manager to find the TpAccount corresponding to our
        * AgAccount */
       manager = tp_account_manager_dup ();
-      factory = tp_proxy_get_factory (manager);
-      tp_simple_client_factory_add_account_features_varargs (factory,
-          TP_ACCOUNT_FEATURE_STORAGE,
-          0);
-      tp_account_manager_prepare_all_async (manager,
+
+      tp_proxy_prepare_async (manager, NULL,
           manager_prepared_cb, g_object_ref (self));
       g_object_unref (manager);
       return;
index 858ef65e1114ee6a93e21e0690c0dbf3ff3c14f6..7431abc0828599a41c3f02d9fb978bde54997093 100644 (file)
@@ -22,6 +22,8 @@
 
 #include "empathy-accounts-plugin.h"
 
+#include <libempathy/empathy-client-factory.h>
+
 #include "empathy-accounts-plugin-widget.h"
 
 G_DEFINE_TYPE (EmpathyAccountsPlugin, empathy_accounts_plugin, AP_TYPE_PLUGIN)
@@ -101,6 +103,20 @@ empathy_accounts_plugin_class_init (
 static void
 empathy_accounts_plugin_init (EmpathyAccountsPlugin *self)
 {
+  if (tp_account_manager_can_set_default ())
+    {
+      EmpathyClientFactory *factory;
+      TpAccountManager *am;
+
+      factory = empathy_client_factory_dup ();
+      am = tp_account_manager_new_with_factory (
+          TP_SIMPLE_CLIENT_FACTORY (factory));
+      tp_account_manager_set_default (am);
+
+      g_object_unref (factory);
+      g_object_unref (am);
+    }
+
 }
 
 GType