]> git.0d.be Git - empathy.git/commitdiff
Bug 641662 — Update for libfolks API changes to IndividualAggregator
authorPhilip Withnall <philip.withnall@collabora.co.uk>
Sun, 6 Feb 2011 12:14:28 +0000 (12:14 +0000)
committerPhilip Withnall <philip.withnall@collabora.co.uk>
Thu, 17 Feb 2011 23:46:07 +0000 (23:46 +0000)
Update EmpathyIndividualManager re. changes to
IndividualAggregator.add_persona_from_details, BackendStore.enabled_backends
and BackendStore.get_backend_by_name in libfolks. Closes: bgo#641662

libempathy/empathy-individual-manager.c
libempathy/empathy-utils.c

index 29470b87e9a4f4eb556158a140e76fe05de38aa2..894ae648b841444938fa7a028be87610c380749b 100644 (file)
@@ -383,7 +383,10 @@ empathy_individual_manager_add_from_contact (EmpathyIndividualManager *self,
     EmpathyContact *contact)
 {
   EmpathyIndividualManagerPriv *priv;
-  GHashTable* details;
+  FolksBackendStore *backend_store;
+  FolksBackend *backend;
+  FolksPersonaStore *persona_store;
+  GHashTable* details, *persona_stores;
   TpAccount *account;
   const gchar *store_id;
 
@@ -402,15 +405,41 @@ empathy_individual_manager_add_from_contact (EmpathyIndividualManager *self,
   account = empathy_contact_get_account (contact);
   store_id = tp_proxy_get_object_path (TP_PROXY (account));
 
+  /* Get the persona store to use */
+  backend_store = folks_backend_store_dup ();
+  backend =
+      folks_backend_store_dup_backend_by_name (backend_store, "telepathy");
+
+  if (backend == NULL)
+    {
+      g_warning ("Failed to add individual from contact: couldn't get "
+          "'telepathy' backend");
+      goto finish;
+    }
+
+  persona_stores = folks_backend_get_persona_stores (backend);
+  persona_store = g_hash_table_lookup (persona_stores, store_id);
+
+  if (persona_store == NULL)
+    {
+      g_warning ("Failed to add individual from contact: couldn't get persona "
+          "store '%s'", store_id);
+      goto finish;
+    }
+
   details = tp_asv_new (
       "contact", G_TYPE_STRING, empathy_contact_get_id (contact),
       NULL);
 
   folks_individual_aggregator_add_persona_from_details (
-      priv->aggregator, NULL, "telepathy", store_id, details,
+      priv->aggregator, NULL, persona_store, details,
       aggregator_add_persona_from_details_cb, contact);
 
   g_hash_table_destroy (details);
+
+finish:
+  tp_clear_object (&backend);
+  tp_clear_object (&backend_store);
 }
 
 static void
index b23071a2985ecf873efcd0b2a49c19ddb63fc7c8..7ab59814fa0904d314a1407f468e64d0b0d6f361 100644 (file)
@@ -837,7 +837,7 @@ empathy_get_persona_store_for_connection (TpConnection *connection)
   TpfPersonaStore *result = NULL;
 
   backend_store = folks_backend_store_dup ();
-  backend = folks_backend_store_get_backend_by_name (backend_store,
+  backend = folks_backend_store_dup_backend_by_name (backend_store,
       "telepathy");
   if (backend != NULL)
     {