From 4bfcf92f0d6a11253d34bba3eb094dd6661d3b4c Mon Sep 17 00:00:00 2001 From: Stefan Becker Date: Thu, 15 Aug 2013 22:55:41 +0300 Subject: [PATCH] ucs: add RemoveImGroup operation Used to delete groups. NOTE: UCS only allows to delete user groups, not predefined groups like "Favourites". So while SIPE will happily delete them they will pop up again when you login next time. --- src/core/sipe-group.c | 23 ++++++++++++++--------- src/core/sipe-ucs.c | 16 ++++++++++++++++ src/core/sipe-ucs.h | 9 +++++++++ 3 files changed, 39 insertions(+), 9 deletions(-) diff --git a/src/core/sipe-group.c b/src/core/sipe-group.c index 1e9c423c..7885d86d 100755 --- a/src/core/sipe-group.c +++ b/src/core/sipe-group.c @@ -294,18 +294,23 @@ sipe_core_group_remove(struct sipe_core_public *sipe_public, struct sipe_group *s_group = sipe_group_find_by_name(sipe_private, name); if (s_group) { - gchar *request; - SIPE_DEBUG_INFO("Deleting group %s", name); - request = g_strdup_printf("%d", - s_group->id); - sip_soap_request(sipe_private, - "deleteGroup", - request); - g_free(request); + SIPE_DEBUG_INFO("sipe_core_group_remove: delete '%s'", name); + + if (sipe_ucs_is_migrated(sipe_private)) { + sipe_ucs_group_remove(sipe_private, + s_group); + } else { + gchar *request = g_strdup_printf("%d", + s_group->id); + sip_soap_request(sipe_private, + "deleteGroup", + request); + g_free(request); + } group_free(sipe_private, s_group); } else { - SIPE_DEBUG_INFO("Cannot find group %s to delete", name); + SIPE_DEBUG_INFO("sipe_core_group_remove: cannot find group '%s'", name); } } diff --git a/src/core/sipe-ucs.c b/src/core/sipe-ucs.c index 0c3c8195..286d3855 100644 --- a/src/core/sipe-ucs.c +++ b/src/core/sipe-ucs.c @@ -273,6 +273,22 @@ void sipe_ucs_group_rename(struct sipe_core_private *sipe_private, g_free(body); } +void sipe_ucs_group_remove(struct sipe_core_private *sipe_private, + struct sipe_group *group) +{ + gchar *body = g_strdup_printf("" + " " + "", + group->exchange_key, + group->change_key); + + sipe_ucs_http_request(sipe_private, + body, + sipe_ucs_ignore_response, + NULL); + g_free(body); +} + static void sipe_ucs_get_im_item_list_response(struct sipe_core_private *sipe_private, const sipe_xml *body, SIPE_UNUSED_PARAMETER gpointer callback_data) diff --git a/src/core/sipe-ucs.h b/src/core/sipe-ucs.h index c49c4215..f8d49a7b 100644 --- a/src/core/sipe-ucs.h +++ b/src/core/sipe-ucs.h @@ -57,6 +57,15 @@ void sipe_ucs_group_rename(struct sipe_core_private *sipe_private, const gchar *new_name); /** + * Remove group + * + * @param sipe_private SIPE core private data + * @param group sipe_group structure + */ +void sipe_ucs_group_remove(struct sipe_core_private *sipe_private, + struct sipe_group *group); + +/** * Initialize UCS * * @param sipe_private SIPE core private data -- 2.11.4.GIT