Mercurial > pidgin
comparison libpurple/protocols/msn/contact.c @ 20447:18ecdee88ed0
Add Pending list to recognized lists during contact list parsing
Don't try pushing Reverse or Pending lists to notification server
Improvements to detecting Yahoo users so Passports with @yahoo.com addresses
will work better. Fixes #1331
author | Stu Tomlinson <stu@nosnilmot.com> |
---|---|
date | Mon, 28 May 2007 16:12:25 +0000 |
parents | a1c6206f0205 |
children | 46437bdf316b |
comparison
equal
deleted
inserted
replaced
20446:9e585c2dbf07 | 20447:18ecdee88ed0 |
---|---|
94 return MSN_LIST_AL_OP; | 94 return MSN_LIST_AL_OP; |
95 }else if(!strcmp(role,"Block")){ | 95 }else if(!strcmp(role,"Block")){ |
96 return MSN_LIST_BL_OP; | 96 return MSN_LIST_BL_OP; |
97 }else if(!strcmp(role,"Reverse")){ | 97 }else if(!strcmp(role,"Reverse")){ |
98 return MSN_LIST_RL_OP; | 98 return MSN_LIST_RL_OP; |
99 }else if(!strcmp(role,"Pending")){ | |
100 return MSN_LIST_PL_OP; | |
99 } | 101 } |
100 return 0; | 102 return 0; |
101 } | 103 } |
102 | 104 |
103 /*get User Type*/ | 105 /*get User Type*/ |
338 for(contactNode = xmlnode_get_child(node, "Contact"); contactNode; | 340 for(contactNode = xmlnode_get_child(node, "Contact"); contactNode; |
339 contactNode = xmlnode_get_next_twin(contactNode)){ | 341 contactNode = xmlnode_get_next_twin(contactNode)){ |
340 xmlnode *contactId,*contactInfo,*contactType,*passportName,*displayName,*guid; | 342 xmlnode *contactId,*contactInfo,*contactType,*passportName,*displayName,*guid; |
341 xmlnode *groupIds; | 343 xmlnode *groupIds; |
342 MsnUser *user; | 344 MsnUser *user; |
345 MsnUserType usertype; | |
343 char *passport,*Name,*uid,*type; | 346 char *passport,*Name,*uid,*type; |
344 | 347 |
345 passport = NULL; | 348 passport = NULL; |
346 | 349 |
347 contactId= xmlnode_get_child(contactNode,"contactId"); | 350 contactId= xmlnode_get_child(contactNode,"contactId"); |
357 friendly = xmlnode_get_data(xmlnode_get_child(contactInfo, "displayName")); | 360 friendly = xmlnode_get_data(xmlnode_get_child(contactInfo, "displayName")); |
358 purple_connection_set_display_name(session->account->gc, purple_url_decode(friendly)); | 361 purple_connection_set_display_name(session->account->gc, purple_url_decode(friendly)); |
359 g_free(friendly); | 362 g_free(friendly); |
360 continue; /* Not adding own account as buddy to buddylist */ | 363 continue; /* Not adding own account as buddy to buddylist */ |
361 } | 364 } |
362 | 365 usertype = msn_get_user_type(type); |
363 passportName = xmlnode_get_child(contactInfo,"passportName"); | 366 passportName = xmlnode_get_child(contactInfo,"passportName"); |
364 if(passportName == NULL){ | 367 if(passportName == NULL){ |
365 xmlnode *emailsNode, *contactEmailNode, *emailNode; | 368 xmlnode *emailsNode, *contactEmailNode, *emailNode; |
366 xmlnode *messengerEnabledNode; | 369 xmlnode *messengerEnabledNode; |
367 char *msnEnabled; | 370 char *msnEnabled; |
383 if(!strcmp(msnEnabled,"true")){ | 386 if(!strcmp(msnEnabled,"true")){ |
384 /*Messenger enabled, Get the Passport*/ | 387 /*Messenger enabled, Get the Passport*/ |
385 emailNode = xmlnode_get_child(contactEmailNode,"email"); | 388 emailNode = xmlnode_get_child(contactEmailNode,"email"); |
386 passport = xmlnode_get_data(emailNode); | 389 passport = xmlnode_get_data(emailNode); |
387 purple_debug_info("MsnAB","Yahoo User %s\n",passport); | 390 purple_debug_info("MsnAB","Yahoo User %s\n",passport); |
391 usertype = MSN_USER_TYPE_YAHOO; | |
388 break; | 392 break; |
389 }else{ | 393 }else{ |
390 /*TODO maybe we can just ignore it in Purple?*/ | 394 /*TODO maybe we can just ignore it in Purple?*/ |
391 emailNode = xmlnode_get_child(contactEmailNode,"email"); | 395 emailNode = xmlnode_get_child(contactEmailNode,"email"); |
392 passport = xmlnode_get_data(emailNode); | 396 passport = xmlnode_get_data(emailNode); |
412 purple_debug_misc("MsnAB","passport:{%s} uid:{%s} display:{%s}\n", | 416 purple_debug_misc("MsnAB","passport:{%s} uid:{%s} display:{%s}\n", |
413 passport,uid,Name); | 417 passport,uid,Name); |
414 | 418 |
415 user = msn_userlist_find_add_user(session->userlist, passport,Name); | 419 user = msn_userlist_find_add_user(session->userlist, passport,Name); |
416 msn_user_set_uid(user,uid); | 420 msn_user_set_uid(user,uid); |
417 msn_user_set_type(user,msn_get_user_type(type)); | 421 msn_user_set_type(user, usertype); |
418 g_free(Name); | 422 g_free(Name); |
419 g_free(passport); | 423 g_free(passport); |
420 g_free(uid); | 424 g_free(uid); |
421 g_free(type); | 425 g_free(type); |
422 | 426 |