Mercurial > pidgin
diff src/protocols/msn/msn.c @ 5322:a4d017bee1de
[gaim-migrate @ 5694]
Dragging buddies into different groups now moves them server-side. You may
have some bugs regarding this, or some errors. They should go away after
they are moved into new groups.
committer: Tailor Script <tailor@pidgin.im>
author | Christian Hammond <chipx86@chipx86.com> |
---|---|
date | Wed, 07 May 2003 01:53:04 +0000 |
parents | bd98232872a3 |
children | b716ffc25d2d |
line wrap: on
line diff
--- a/src/protocols/msn/msn.c Wed May 07 01:41:07 2003 +0000 +++ b/src/protocols/msn/msn.c Wed May 07 01:53:04 2003 +0000 @@ -751,7 +751,51 @@ msn_group_buddy(struct gaim_connection *gc, const char *who, const char *old_group, const char *new_group) { - + MsnSession *session = gc->proto_data; + char outparams[MSN_BUF_LEN]; + gint *old_group_id, *new_group_id; + + old_group_id = g_hash_table_lookup(session->group_ids, old_group); + new_group_id = g_hash_table_lookup(session->group_ids, new_group); + + if (new_group_id == NULL) { + g_snprintf(outparams, sizeof(outparams), "%s 0", + msn_url_encode(new_group)); + + if (!msn_servconn_send_command(session->notification_conn, + "ADG", outparams)) { + hide_login_progress(gc, _("Write error")); + signoff(gc); + return; + } + + /* I hate this. So much. */ + session->moving_buddy = TRUE; + session->dest_group_id = *new_group_id; + } + else { + g_snprintf(outparams, sizeof(outparams), "FL %s %s %d", + who, who, *new_group_id); + + if (!msn_servconn_send_command(session->notification_conn, + "ADD", outparams)) { + hide_login_progress(gc, _("Write error")); + signoff(gc); + return; + } + } + + if (old_group_id != NULL) { + g_snprintf(outparams, sizeof(outparams), "FL %s %d", + who, *old_group_id); + + if (!msn_servconn_send_command(session->notification_conn, + "REM", outparams)) { + hide_login_progress(gc, _("Write error")); + signoff(gc); + return; + } + } } static void