]> git.0d.be Git - empathy.git/commitdiff
account-plugins: implement delete
authorGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>
Wed, 18 Jul 2012 13:44:31 +0000 (15:44 +0200)
committerGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>
Tue, 24 Jul 2012 14:37:23 +0000 (16:37 +0200)
https://bugzilla.gnome.org/show_bug.cgi?id=680448

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

index cbbe90b3e72a763cc1f999075c9d0b8dcd0aeb9d..858ef65e1114ee6a93e21e0690c0dbf3ff3c14f6 100644 (file)
@@ -46,12 +46,40 @@ empathy_accounts_plugin_build_widget (ApPlugin *plugin)
   return widget;
 }
 
+static void
+store_delete_cb (AgAccount *account,
+    const GError *error,
+    gpointer user_data)
+{
+  GSimpleAsyncResult *result = user_data;
+
+  if (error != NULL)
+    {
+      g_debug ("Failed to delete account with ID '%u': %s",
+          account->id, error->message);
+
+      g_simple_async_result_set_from_error (result, error);
+    }
+
+  g_simple_async_result_complete (result);
+  g_object_unref (result);
+}
+
 static void
 empathy_accounts_plugin_delete_account (ApPlugin *plugin,
     GAsyncReadyCallback callback,
     gpointer user_data)
 {
-  /* TODO */
+  AgAccount *account;
+  GSimpleAsyncResult *result;
+
+  result = g_simple_async_result_new (G_OBJECT (plugin),
+      callback, user_data, ap_plugin_delete_account);
+
+  account = ap_plugin_get_account (plugin);
+
+  ag_account_delete (account);
+  ag_account_store (account, store_delete_cb, result);
 }
 
 static void