aboutsummaryrefslogtreecommitdiffstats
path: root/src/empathy-chat-manager.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/empathy-chat-manager.c')
-rw-r--r--src/empathy-chat-manager.c66
1 files changed, 50 insertions, 16 deletions
diff --git a/src/empathy-chat-manager.c b/src/empathy-chat-manager.c
index b3b02c518..3e6404d26 100644
--- a/src/empathy-chat-manager.c
+++ b/src/empathy-chat-manager.c
@@ -28,6 +28,7 @@
#include "empathy-request-util.h"
#include "empathy-ui-utils.h"
#include "extensions.h"
+#include "chat-manager-interface.h"
#define DEBUG_FLAG EMPATHY_DEBUG_OTHER
#include "empathy-debug.h"
@@ -535,27 +536,60 @@ svc_iface_init (gpointer g_iface,
#undef IMPLEMENT
}
-void
-empathy_chat_manager_call_undo_closed_chat (void)
+static void
+undo_closed_cb (GObject *source,
+ GAsyncResult *result,
+ gpointer user_data)
{
- TpDBusDaemon *dbus_daemon = tp_dbus_daemon_dup (NULL);
- TpProxy *proxy;
+ GError *error = NULL;
- if (dbus_daemon == NULL)
- return;
+ if (!empathy_gen_chat_manager_call_undo_closed_chat_finish (
+ EMPATHY_GEN_CHAT_MANAGER (source), result,
+ &error))
+ {
+ DEBUG ("UndoClosedChat failed: %s", error->message);
+ g_error_free (error);
+ }
+}
- proxy = g_object_new (TP_TYPE_PROXY,
- "dbus-daemon", dbus_daemon,
- "dbus-connection", tp_proxy_get_dbus_connection (TP_PROXY (dbus_daemon)),
- "bus-name", EMPATHY_CHAT_TP_BUS_NAME,
- "object-path", CHAT_MANAGER_PATH,
- NULL);
+static void
+chat_mgr_proxy_cb (GObject *source,
+ GAsyncResult *result,
+ gpointer user_data)
+{
+ EmpathyGenChatManager *proxy;
+ GError *error = NULL;
+ GVariant *action_time = user_data;
- tp_proxy_add_interface_by_id (proxy, EMP_IFACE_QUARK_CHAT_MANAGER);
+ proxy = empathy_gen_chat_manager_proxy_new_for_bus_finish (result, &error);
+ if (proxy == NULL)
+ {
+ DEBUG ("Failed to create ChatManager proxy: %s", error->message);
+ g_error_free (error);
+ goto finally;
+ }
- emp_cli_chat_manager_call_undo_closed_chat (proxy, -1, empathy_get_current_action_time (),
- NULL, NULL, NULL, NULL);
+ empathy_gen_chat_manager_call_undo_closed_chat (proxy,
+ g_variant_get_int64 (action_time), NULL, undo_closed_cb, NULL);
g_object_unref (proxy);
- g_object_unref (dbus_daemon);
+
+finally:
+ g_variant_unref (action_time);
+}
+
+void
+empathy_chat_manager_call_undo_closed_chat (void)
+{
+ gint64 action_time;
+
+ action_time = empathy_get_current_action_time ();
+
+ empathy_gen_chat_manager_proxy_new_for_bus (G_BUS_TYPE_SESSION,
+ G_DBUS_PROXY_FLAGS_NONE, EMPATHY_CHAT_TP_BUS_NAME, CHAT_MANAGER_PATH,
+ NULL, chat_mgr_proxy_cb,
+ /* We can't use GINT_TO_POINTER as we won't be able to store a 64 bits
+ * integer on a 32 bits plateform. Use a GVariant for its convenient
+ * API. */
+ g_variant_new_int64 (action_time));
}