# HG changeset patch # User Ma Yuan # Date 1156591840 0 # Node ID 349b85feaefa394381af95d9e9509880c95b6070 # Parent 1d1e5163b0eb927a12bb50601b1c77a9a71ceb28 [gaim-migrate @ 17043] change the Group operation committed by MaYuan committer: Ethan Blanton diff -r 1d1e5163b0eb -r 349b85feaefa src/protocols/msn/contact.c --- a/src/protocols/msn/contact.c Sat Aug 26 09:23:40 2006 +0000 +++ b/src/protocols/msn/contact.c Sat Aug 26 11:30:40 2006 +0000 @@ -330,6 +330,8 @@ MsnUser *user; char *passport,*Name,*uid,*type; + passport = NULL; + contactId= xmlnode_get_child(contactNode,"contactId"); uid = xmlnode_get_data(contactId); @@ -339,7 +341,8 @@ /*setup the Display Name*/ if (!strcmp(type, "Me")){ - char *friendly = xmlnode_get_data(xmlnode_get_child(contactInfo,"displayName")); + char *friendly; + friendly = xmlnode_get_data(xmlnode_get_child(contactInfo,"displayName")); gaim_connection_set_display_name(session->account->gc, gaim_url_decode(friendly)); g_free(friendly); } @@ -361,10 +364,16 @@ } msnEnabled = xmlnode_get_data(messengerEnabledNode); if(!strcmp(msnEnabled,"true")){ + /*Messenger enabled, Get the Passport*/ emailNode = xmlnode_get_child(contactEmailNode,"email"); passport = xmlnode_get_data(emailNode); gaim_debug_info("MsnAB","Yahoo User %s\n",passport); break; + }else{ + /*TODO maybe we can just ignore it in Gaim?*/ + emailNode = xmlnode_get_child(contactEmailNode,"email"); + passport = xmlnode_get_data(emailNode); + gaim_debug_info("MSNAB","Other type user\n"); } g_free(msnEnabled); } @@ -372,6 +381,10 @@ passport = xmlnode_get_data(passportName); } + if(passport == NULL){ + continue; + } + displayName = xmlnode_get_child(contactInfo,"displayName"); if(displayName == NULL){ Name = g_strdup(passport); @@ -379,20 +392,23 @@ Name =xmlnode_get_data(displayName); } - gaim_debug_misc("MsnAB","name:%s,Id:{%s},display:{%s}\n", - passport, - uid, - Name); + gaim_debug_misc("MsnAB","passport:{%s} uid:{%s} display:{%s}\n", + passport,uid,Name); user = msn_userlist_find_add_user(session->userlist, passport,Name); msn_user_set_uid(user,uid); msn_user_set_type(user,msn_get_user_type(type)); user->list_op |= MSN_LIST_FL_OP; + gaim_debug_info("MsnAB","prepare to free Name...\n"); g_free(Name); + gaim_debug_info("MsnAB","prepare to free passport...\n"); g_free(passport); + gaim_debug_info("MsnAB","prepare to free uid...\n"); g_free(uid); + gaim_debug_info("MsnAB","prepare to free type...\n"); g_free(type); + gaim_debug_misc("MsnAB","prepare for guid parse...\n"); groupIds = xmlnode_get_child(contactInfo,"groupIds"); if(groupIds){ for(guid = xmlnode_get_child(groupIds, "guid");guid; @@ -407,28 +423,6 @@ group_id = g_strdup(MSN_INDIVIDUALS_GROUP_ID); msn_user_add_group_id(user,group_id); g_free(group_id); -#if 0 - char *name,*group_id; - - name = g_strdup(MSN_INDIVIDUALS_GROUP_NAME); - group_id = g_strdup(MSN_INDIVIDUALS_GROUP_ID); - gaim_debug_misc("MsnContact","group_id:%s name:%s\n",group_id,name); - - msn_user_add_group_id(user,group_id); - msn_group_new(session->userlist, group_id, name); - - if (group_id != NULL){ - gaim_debug_misc("MsnContact","group_id:%s name:%s,value:%d\n",group_id,name,*name=='\0'); - if ((gaim_find_group(name)) == NULL){ - GaimGroup *g = gaim_group_new(name); - gaim_blist_add_group(g, NULL); - } - } - - gaim_debug_misc("contact","guid is NULL\n"); - g_free(name); - g_free(group_id); -#endif } } @@ -489,7 +483,7 @@ static void msn_add_contact_read_cb(gpointer data, gint source, GaimInputCondition cond) { - gaim_debug_info("MaYuan","block read done\n"); + gaim_debug_info("MaYuan","add contact read done\n"); } static void @@ -497,14 +491,14 @@ { MsnSoapConn * soapconn = data; - gaim_debug_info("MaYuan","finish unblock written\n"); + gaim_debug_info("MaYuan","finish add contact written\n"); soapconn->read_cb = msn_add_contact_read_cb; // msn_soap_read_cb(data,source,cond); } /*add a Contact */ void -msn_add_contact(MsnContact *contact,const char *passport,char *groupId) +msn_add_contact(MsnContact *contact,const char *passport,const char *groupId) { MsnSoapReq *soap_request; char *body = NULL; @@ -559,6 +553,7 @@ char *contact_xml = NULL ; MsnSoapReq *soap_request; + g_return_if_fail(contactId == NULL); gaim_debug_info("MaYuan","msn delete a contact,contactId:{%s}...\n",contactId); contact_xml = g_strdup_printf(MSN_CONTACTS_DEL_XML,contactId); body = g_strdup_printf(MSN_DEL_CONTACT_TEMPLATE,contact_xml); @@ -587,7 +582,6 @@ gaim_debug_info("MaYuan","finish unblock written\n"); soapconn->read_cb = msn_block_read_cb; -// msn_soap_read_cb(data,source,cond); } /*block a Contact*/ @@ -623,7 +617,6 @@ gaim_debug_info("MaYuan","finish unblock written\n"); soapconn->read_cb = msn_unblock_read_cb; -// msn_soap_read_cb(data,source,cond); } /*unblock a contact*/ @@ -727,6 +720,10 @@ char *body = NULL; g_return_if_fail(session != NULL); + /*if group uid we need to del is NULL, + * we need to delete nothing + */ + g_return_if_fail(guid != NULL); contact = session->contact; gaim_debug_info("MaYuan","msn del group...\n"); diff -r 1d1e5163b0eb -r 349b85feaefa src/protocols/msn/contact.h --- a/src/protocols/msn/contact.h Sat Aug 26 09:23:40 2006 +0000 +++ b/src/protocols/msn/contact.h Sat Aug 26 11:30:40 2006 +0000 @@ -173,12 +173,18 @@ void msn_get_address_book(MsnContact *contact); /*contact SOAP Operation*/ -void msn_add_contact(MsnContact *contact,const char *passport,char *groupId); +void msn_add_contact(MsnContact *contact,const char *passport,const char *groupId); void msn_delete_contact(MsnContact *contact,const char *contactId); /*group operation*/ void msn_add_group(MsnSession *session,const char* group_name); void msn_del_group(MsnSession *session,const char *guid); + +/*contact Block/unblock operation*/ +void msn_block_contact(MsnContact *contact,const char* membership_id); +void msn_unblock_contact(MsnContact *contact,const char* passport); + + #endif/* _MSN_CMDPROC_H_*/ diff -r 1d1e5163b0eb -r 349b85feaefa src/protocols/msn/msn.c --- a/src/protocols/msn/msn.c Sat Aug 26 09:23:40 2006 +0000 +++ b/src/protocols/msn/msn.c Sat Aug 26 11:30:40 2006 +0000 @@ -1401,9 +1401,14 @@ session = gc->proto_data; cmdproc = session->notification->cmdproc; + /*we can't delete the default group*/ + if(!strcmp(group->name,MSN_INDIVIDUALS_GROUP_NAME)|| + !strcmp(group->name,MSN_NON_IM_GROUP_NAME)){ + return ; + } group_id = msn_userlist_find_group_id(session->userlist, group->name); if (group_id != NULL){ - msn_cmdproc_send(cmdproc, "RMG", "%d", group_id); + msn_del_group(session,group_id); } } diff -r 1d1e5163b0eb -r 349b85feaefa src/protocols/msn/soap.c --- a/src/protocols/msn/soap.c Sat Aug 26 09:23:40 2006 +0000 +++ b/src/protocols/msn/soap.c Sat Aug 26 11:30:40 2006 +0000 @@ -27,7 +27,7 @@ #include "soap.h" /*define this Macro to debug soap server action*/ -#define MSN_SOAP_DEBUG +#undef MSN_SOAP_DEBUG /*local function prototype*/ void msn_soap_set_process_step(MsnSoapConn *soapconn, MsnSoapStep step); diff -r 1d1e5163b0eb -r 349b85feaefa src/protocols/msn/userlist.c --- a/src/protocols/msn/userlist.c Sat Aug 26 09:23:40 2006 +0000 +++ b/src/protocols/msn/userlist.c Sat Aug 26 11:30:40 2006 +0000 @@ -183,18 +183,24 @@ msn_request_add_group(MsnUserList *userlist, const char *who, const char *old_group_name, const char *new_group_name) { + MsnSession *session; MsnCmdProc *cmdproc; MsnMoveBuddy *data; - cmdproc = userlist->session->notification->cmdproc; + session = userlist->session; + cmdproc = session->notification->cmdproc; data = g_new0(MsnMoveBuddy, 1); data->who = g_strdup(who); - if (old_group_name) + if (old_group_name){ data->old_group_name = g_strdup(old_group_name); + /*delete the old group via SOAP action*/ + msn_del_group(session,old_group_name); + } - /*TODO:add new group via SOAP action*/ + /*add new group via SOAP action*/ + msn_add_group(session, new_group_name); } @@ -687,8 +693,10 @@ gaim_debug_info("MaYuan", "add user:{%s} to group id {%s}\n",store_name ,group_id); msn_add_contact(userlist->session->contact,who,group_id); +#if 0 msn_notification_add_buddy(userlist->session->notification, list, who, store_name, group_id); +#endif } void