]> git.0d.be Git - empathy.git/commitdiff
new-message-dialog: rely on the factory to prepare TP_CONNECTION_FEATURE_CAPABILITIES
authorGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>
Thu, 18 Aug 2011 15:17:49 +0000 (17:17 +0200)
committerGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>
Fri, 19 Aug 2011 07:26:26 +0000 (09:26 +0200)
https://bugzilla.gnome.org/show_bug.cgi?id=656831

libempathy-gtk/empathy-new-message-dialog.c

index f3186ccf9f8162a208904859f0329c330cb7de72..1c4bbaad50d2aa9d6e2ed795916a0510f79d6e72 100644 (file)
 #include "empathy-new-message-dialog.h"
 #include "empathy-account-chooser.h"
 
-typedef struct {
-  EmpathyAccountChooserFilterResultCallback callback;
-  gpointer                                  user_data;
-} FilterCallbackData;
-
 static EmpathyNewMessageDialog *dialog_singleton = NULL;
 
 G_DEFINE_TYPE(EmpathyNewMessageDialog, empathy_new_message_dialog,
@@ -101,28 +96,6 @@ out:
   gtk_widget_destroy (GTK_WIDGET (dialog));
 }
 
-static void
-conn_prepared_cb (GObject *conn,
-    GAsyncResult *result,
-    gpointer user_data)
-{
-  FilterCallbackData *data = user_data;
-  GError *myerr = NULL;
-  TpCapabilities *caps;
-
-  if (!tp_proxy_prepare_finish (conn, result, &myerr))
-    {
-      data->callback (FALSE, data->user_data);
-      g_slice_free (FilterCallbackData, data);
-    }
-
-  caps = tp_connection_get_capabilities (TP_CONNECTION (conn));
-  data->callback (tp_capabilities_supports_text_chats (caps),
-      data->user_data);
-
-  g_slice_free (FilterCallbackData, data);
-}
-
 static void
 empathy_new_message_account_filter (EmpathyContactSelectorDialog *dialog,
     EmpathyAccountChooserFilterResultCallback callback,
@@ -130,28 +103,22 @@ empathy_new_message_account_filter (EmpathyContactSelectorDialog *dialog,
     TpAccount *account)
 {
   TpConnection *connection;
-  FilterCallbackData *cb_data;
-  GQuark features[] = { TP_CONNECTION_FEATURE_CAPABILITIES, 0 };
-
-  if (tp_account_get_connection_status (account, NULL) !=
-      TP_CONNECTION_STATUS_CONNECTED)
-    {
-      callback (FALSE, callback_data);
-      return;
-    }
+  gboolean supported = FALSE;
+  TpCapabilities *caps;
 
   /* check if CM supports 1-1 text chat */
   connection = tp_account_get_connection (account);
   if (connection == NULL)
-    {
-      callback (FALSE, callback_data);
-      return;
-    }
+      goto out;
+
+  caps = tp_connection_get_capabilities (connection);
+  if (caps == NULL)
+      goto out;
 
-  cb_data = g_slice_new0 (FilterCallbackData);
-  cb_data->callback = callback;
-  cb_data->user_data = callback_data;
-  tp_proxy_prepare_async (connection, features, conn_prepared_cb, cb_data);
+  supported = tp_capabilities_supports_text_chats (caps);
+
+out:
+  callback (supported, callback_data);
 }
 
 static void