From eda1e2e182aa385d8b65ef6ff663f777deb8c622 Mon Sep 17 00:00:00 2001 From: Stefan Becker Date: Mon, 19 Aug 2013 22:03:22 +0300 Subject: [PATCH] ucs: add AddImContactToGroup operation Used to add an exisiting buddy to a group. --- src/core/sipe-buddy.c | 7 ++++++- src/core/sipe-ucs.c | 28 +++++++++++++++++++++++++++- src/core/sipe-ucs.h | 11 +++++++++++ 3 files changed, 44 insertions(+), 2 deletions(-) diff --git a/src/core/sipe-buddy.c b/src/core/sipe-buddy.c index 2ec227a3..351475b2 100644 --- a/src/core/sipe-buddy.c +++ b/src/core/sipe-buddy.c @@ -575,7 +575,12 @@ void sipe_core_buddy_group(struct sipe_core_public *sipe_public, sipe_group_create(SIPE_CORE_PRIVATE, new_group_name, who); } else { sipe_buddy_insert_group(buddy, new_group); - sipe_group_update_buddy(SIPE_CORE_PRIVATE, buddy); + if (sipe_ucs_is_migrated(SIPE_CORE_PRIVATE)) + sipe_ucs_group_add_buddy(SIPE_CORE_PRIVATE, + new_group, + buddy); + else + sipe_group_update_buddy(SIPE_CORE_PRIVATE, buddy); } } diff --git a/src/core/sipe-ucs.c b/src/core/sipe-ucs.c index a840c26d..3f15adf3 100644 --- a/src/core/sipe-ucs.c +++ b/src/core/sipe-ucs.c @@ -254,6 +254,30 @@ static void sipe_ucs_ignore_response(SIPE_UNUSED_PARAMETER struct sipe_core_priv SIPE_DEBUG_INFO_NOFORMAT("sipe_ucs_ignore_response: done"); } +void sipe_ucs_group_add_buddy(struct sipe_core_private *sipe_private, + struct sipe_group *group, + struct sipe_buddy *buddy) +{ + /* existing or new byddy? */ + if (buddy->exchange_key) { + gchar *body = g_strdup_printf("" + " " + " " + "", + buddy->exchange_key, + buddy->change_key, + group->exchange_key, + group->change_key); + + sipe_ucs_http_request(sipe_private, + body, + sipe_ucs_ignore_response, + NULL); + g_free(body); + } else { + } +} + void sipe_ucs_group_remove_buddy(struct sipe_core_private *sipe_private, struct sipe_group *group, struct sipe_buddy *buddy) @@ -321,7 +345,9 @@ static void sipe_ucs_add_im_group_response(struct sipe_core_private *sipe_privat if (buddy) { sipe_buddy_insert_group(buddy, group); - /* @TODO: send operation to add buddy to group */ + sipe_ucs_group_add_buddy(sipe_private, + group, + buddy); } } diff --git a/src/core/sipe-ucs.h b/src/core/sipe-ucs.h index 49a87a57..a9a2be7e 100644 --- a/src/core/sipe-ucs.h +++ b/src/core/sipe-ucs.h @@ -47,6 +47,17 @@ void sipe_ucs_get_photo(struct sipe_core_private *sipe_private, gboolean sipe_ucs_is_migrated(struct sipe_core_private *sipe_private); /** + * Add buddy to group + * + * @param sipe_private SIPE core private data + * @param group sipe_group structure + * @param buddy sipe_buddy structure + */ +void sipe_ucs_group_add_buddy(struct sipe_core_private *sipe_private, + struct sipe_group *group, + struct sipe_buddy *buddy); + +/** * Remove buddy from group * * @param sipe_private SIPE core private data -- 2.11.4.GIT