comparison libpurple/protocols/jabber/google.c @ 27590:a08e84032814

merge of '2348ff22f0ff3453774b8b25b36238465580c609' and 'e76f11543c2a4aa05bdf584f087cbe3439029661'
author Paul Aurich <paul@darkrain42.org>
date Sun, 12 Jul 2009 05:43:38 +0000
parents 3bb1085235d0
children a12574d982a1
comparison
equal deleted inserted replaced
27104:048bcf41deef 27590:a08e84032814
937 return; 937 return;
938 } 938 }
939 939
940 void jabber_gmail_init(JabberStream *js) { 940 void jabber_gmail_init(JabberStream *js) {
941 JabberIq *iq; 941 JabberIq *iq;
942 942 xmlnode *usersetting, *mailnotifications;
943 if (!purple_account_get_check_mail(js->gc->account)) 943
944 return; 944 if (!purple_account_get_check_mail(purple_connection_get_account(js->gc)))
945 return;
946
947 /*
948 * Quoting http://code.google.com/apis/talk/jep_extensions/usersettings.html:
949 * To ensure better compatibility with other clients, rather than
950 * setting this value to "false" to turn off notifications, it is
951 * recommended that a client set this to "true" and filter incoming
952 * email notifications itself.
953 */
954 iq = jabber_iq_new(js, JABBER_IQ_SET);
955 usersetting = xmlnode_new_child(iq->node, "usersetting");
956 xmlnode_set_namespace(usersetting, "google:setting");
957 mailnotifications = xmlnode_new_child(usersetting, "mailnotifications");
958 xmlnode_set_attrib(mailnotifications, "value", "true");
959 jabber_iq_send(iq);
945 960
946 iq = jabber_iq_new_query(js, JABBER_IQ_GET, "google:mail:notify"); 961 iq = jabber_iq_new_query(js, JABBER_IQ_GET, "google:mail:notify");
947 jabber_iq_set_callback(iq, jabber_gmail_parse, NULL); 962 jabber_iq_set_callback(iq, jabber_gmail_parse, NULL);
948 jabber_iq_send(iq); 963 jabber_iq_send(iq);
949 } 964 }
985 } 1000 }
986 1001
987 gboolean jabber_google_roster_incoming(JabberStream *js, xmlnode *item) 1002 gboolean jabber_google_roster_incoming(JabberStream *js, xmlnode *item)
988 { 1003 {
989 PurpleAccount *account = purple_connection_get_account(js->gc); 1004 PurpleAccount *account = purple_connection_get_account(js->gc);
990 GSList *list = account->deny;
991 const char *jid = xmlnode_get_attrib(item, "jid"); 1005 const char *jid = xmlnode_get_attrib(item, "jid");
992 gboolean on_block_list = FALSE; 1006 gboolean on_block_list = FALSE;
993 1007
994 char *jid_norm; 1008 char *jid_norm;
995 1009
1003 return FALSE; 1017 return FALSE;
1004 } 1018 }
1005 1019
1006 jid_norm = g_strdup(jabber_normalize(account, jid)); 1020 jid_norm = g_strdup(jabber_normalize(account, jid));
1007 1021
1008 while (list) { 1022 on_block_list = NULL != g_slist_find_custom(account->deny, jid_norm,
1009 if (!strcmp(jid_norm, (char*)list->data)) { 1023 (GCompareFunc)strcmp);
1010 on_block_list = TRUE;
1011 break;
1012 }
1013 list = list->next;
1014 }
1015 1024
1016 if (grt && (*grt == 'H' || *grt == 'h')) { 1025 if (grt && (*grt == 'H' || *grt == 'h')) {
1017 PurpleBuddy *buddy = purple_find_buddy(account, jid_norm); 1026 /* Hidden; don't show this buddy. */
1018 if (buddy) 1027 GSList *buddies = purple_find_buddies(account, jid_norm);
1019 purple_blist_remove_buddy(buddy); 1028 if (buddies)
1029 purple_debug_info("jabber", "Removing %s from local buddy list\n",
1030 jid_norm);
1031
1032 for ( ; buddies; buddies = g_slist_delete_link(buddies, buddies)) {
1033 purple_blist_remove_buddy(buddies->data);
1034 }
1035
1020 g_free(jid_norm); 1036 g_free(jid_norm);
1021 return FALSE; 1037 return FALSE;
1022 } 1038 }
1023 1039
1024 if (!on_block_list && (grt && (*grt == 'B' || *grt == 'b'))) { 1040 if (!on_block_list && (grt && (*grt == 'B' || *grt == 'b'))) {
1045 JabberBuddy *jb; 1061 JabberBuddy *jb;
1046 const char *balias; 1062 const char *balias;
1047 1063
1048 js = (JabberStream*)(gc->proto_data); 1064 js = (JabberStream*)(gc->proto_data);
1049 1065
1050 if (!js || !js->server_caps & JABBER_CAP_GOOGLE_ROSTER) 1066 if (!js || !(js->server_caps & JABBER_CAP_GOOGLE_ROSTER))
1051 return; 1067 return;
1052 1068
1053 jb = jabber_buddy_find(js, who, TRUE); 1069 jb = jabber_buddy_find(js, who, TRUE);
1054 1070
1055 buddies = purple_find_buddies(js->gc->account, who); 1071 buddies = purple_find_buddies(js->gc->account, who);
1115 g_return_if_fail(gc != NULL); 1131 g_return_if_fail(gc != NULL);
1116 g_return_if_fail(who != NULL); 1132 g_return_if_fail(who != NULL);
1117 1133
1118 js = (JabberStream*)(gc->proto_data); 1134 js = (JabberStream*)(gc->proto_data);
1119 1135
1120 if (!js || !js->server_caps & JABBER_CAP_GOOGLE_ROSTER) 1136 if (!js || !(js->server_caps & JABBER_CAP_GOOGLE_ROSTER))
1121 return; 1137 return;
1122 1138
1123 buddies = purple_find_buddies(purple_connection_get_account(js->gc), who); 1139 buddies = purple_find_buddies(purple_connection_get_account(js->gc), who);
1124 if(!buddies) 1140 if(!buddies)
1125 return; 1141 return;