comparison libpurple/protocols/oscar/oscar.c @ 20721:d579d77d4604

Make phone numbers always show up as online and mobile. AOL takes does this for us for US phone numbers, so this change is mostly for ICQ users who've added non-US phone numbers to their buddy list (in the form of "+32123423")
author Mark Doliner <mark@kingant.net>
date Sun, 30 Sep 2007 00:34:03 +0000
parents 408c4bb03915
children 2bb82b05d30a
comparison
equal deleted inserted replaced
20720:217d520f7edb 20721:d579d77d4604
2182 static void 2182 static void
2183 purple_auth_request(struct name_data *data, char *msg) 2183 purple_auth_request(struct name_data *data, char *msg)
2184 { 2184 {
2185 PurpleConnection *gc; 2185 PurpleConnection *gc;
2186 OscarData *od; 2186 OscarData *od;
2187 PurpleAccount *account;
2187 PurpleBuddy *buddy; 2188 PurpleBuddy *buddy;
2188 PurpleGroup *group; 2189 PurpleGroup *group;
2189 2190
2190 gc = data->gc; 2191 gc = data->gc;
2191 od = gc->proto_data; 2192 od = gc->proto_data;
2192 buddy = purple_find_buddy(purple_connection_get_account(gc), data->name); 2193 account = purple_connection_get_account(gc);
2194 buddy = purple_find_buddy(account, data->name);
2193 if (buddy != NULL) 2195 if (buddy != NULL)
2194 group = purple_buddy_get_group(buddy); 2196 group = purple_buddy_get_group(buddy);
2195 else 2197 else
2196 group = NULL; 2198 group = NULL;
2197 2199
2199 { 2201 {
2200 purple_debug_info("oscar", "ssi: adding buddy %s to group %s\n", 2202 purple_debug_info("oscar", "ssi: adding buddy %s to group %s\n",
2201 buddy->name, group->name); 2203 buddy->name, group->name);
2202 aim_ssi_sendauthrequest(od, data->name, msg ? msg : _("Please authorize me so I can add you to my buddy list.")); 2204 aim_ssi_sendauthrequest(od, data->name, msg ? msg : _("Please authorize me so I can add you to my buddy list."));
2203 if (!aim_ssi_itemlist_finditem(od->ssi.local, group->name, buddy->name, AIM_SSI_TYPE_BUDDY)) 2205 if (!aim_ssi_itemlist_finditem(od->ssi.local, group->name, buddy->name, AIM_SSI_TYPE_BUDDY))
2206 {
2204 aim_ssi_addbuddy(od, buddy->name, group->name, NULL, purple_buddy_get_alias_only(buddy), NULL, NULL, TRUE); 2207 aim_ssi_addbuddy(od, buddy->name, group->name, NULL, purple_buddy_get_alias_only(buddy), NULL, NULL, TRUE);
2208
2209 /* Mobile users should always be online */
2210 if (buddy->name[0] == '+') {
2211 purple_prpl_got_user_status(account,
2212 purple_buddy_get_name(buddy),
2213 OSCAR_STATUS_ID_AVAILABLE, NULL);
2214 purple_prpl_got_user_status(account,
2215 purple_buddy_get_name(buddy),
2216 OSCAR_STATUS_ID_MOBILE, NULL);
2217 }
2218 }
2205 } 2219 }
2206 } 2220 }
2207 2221
2208 static void 2222 static void
2209 purple_auth_dontrequest(struct name_data *data) 2223 purple_auth_dontrequest(struct name_data *data)
4619 } 4633 }
4620 #endif 4634 #endif
4621 4635
4622 void 4636 void
4623 oscar_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group) { 4637 oscar_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group) {
4624 OscarData *od = (OscarData *)gc->proto_data; 4638 OscarData *od;
4639 PurpleAccount *account;
4640
4641 od = (OscarData *)gc->proto_data;
4642 account = purple_connection_get_account(gc);
4625 4643
4626 if (!aim_snvalid(buddy->name)) { 4644 if (!aim_snvalid(buddy->name)) {
4627 gchar *buf; 4645 gchar *buf;
4628 buf = g_strdup_printf(_("Could not add the buddy %s because the screen name is invalid. Screen names must be a valid email address, or start with a letter and contain only letters, numbers and spaces, or contain only numbers."), buddy->name); 4646 buf = g_strdup_printf(_("Could not add the buddy %s because the screen name is invalid. Screen names must be a valid email address, or start with a letter and contain only letters, numbers and spaces, or contain only numbers."), buddy->name);
4629 if (!purple_conv_present_error(buddy->name, purple_connection_get_account(gc), buf)) 4647 if (!purple_conv_present_error(buddy->name, account, buf))
4630 purple_notify_error(gc, NULL, _("Unable To Add"), buf); 4648 purple_notify_error(gc, NULL, _("Unable To Add"), buf);
4631 g_free(buf); 4649 g_free(buf);
4632 4650
4633 /* Remove from local list */ 4651 /* Remove from local list */
4634 purple_blist_remove_buddy(buddy); 4652 purple_blist_remove_buddy(buddy);
4638 4656
4639 if ((od->ssi.received_data) && !(aim_ssi_itemlist_finditem(od->ssi.local, group->name, buddy->name, AIM_SSI_TYPE_BUDDY))) { 4657 if ((od->ssi.received_data) && !(aim_ssi_itemlist_finditem(od->ssi.local, group->name, buddy->name, AIM_SSI_TYPE_BUDDY))) {
4640 purple_debug_info("oscar", 4658 purple_debug_info("oscar",
4641 "ssi: adding buddy %s to group %s\n", buddy->name, group->name); 4659 "ssi: adding buddy %s to group %s\n", buddy->name, group->name);
4642 aim_ssi_addbuddy(od, buddy->name, group->name, NULL, purple_buddy_get_alias_only(buddy), NULL, NULL, 0); 4660 aim_ssi_addbuddy(od, buddy->name, group->name, NULL, purple_buddy_get_alias_only(buddy), NULL, NULL, 0);
4661
4662 /* Mobile users should always be online */
4663 if (buddy->name[0] == '+') {
4664 purple_prpl_got_user_status(account,
4665 purple_buddy_get_name(buddy),
4666 OSCAR_STATUS_ID_AVAILABLE, NULL);
4667 purple_prpl_got_user_status(account,
4668 purple_buddy_get_name(buddy),
4669 OSCAR_STATUS_ID_MOBILE, NULL);
4670 }
4643 } 4671 }
4644 4672
4645 /* XXX - Should this be done from AIM accounts, as well? */ 4673 /* XXX - Should this be done from AIM accounts, as well? */
4646 if (od->icq) 4674 if (od->icq)
4647 aim_icq_getalias(od, buddy->name); 4675 aim_icq_getalias(od, buddy->name);
4953 { 4981 {
4954 purple_check_comment(od, comment); 4982 purple_check_comment(od, comment);
4955 g_free(comment); 4983 g_free(comment);
4956 } 4984 }
4957 } 4985 }
4986
4987 /* Mobile users should always be online */
4988 if (b->name[0] == '+') {
4989 purple_prpl_got_user_status(account,
4990 purple_buddy_get_name(b),
4991 OSCAR_STATUS_ID_AVAILABLE, NULL);
4992 purple_prpl_got_user_status(account,
4993 purple_buddy_get_name(b),
4994 OSCAR_STATUS_ID_MOBILE, NULL);
4995 }
4996
4958 g_free(gname_utf8); 4997 g_free(gname_utf8);
4959 g_free(alias_utf8); 4998 g_free(alias_utf8);
4960 } 4999 }
4961 } break; 5000 } break;
4962 5001
5143 } 5182 }
5144 5183
5145 purple_debug_info("oscar", 5184 purple_debug_info("oscar",
5146 "ssi: adding buddy %s to group %s to local list\n", name, gname_utf8 ? gname_utf8 : _("Orphans")); 5185 "ssi: adding buddy %s to group %s to local list\n", name, gname_utf8 ? gname_utf8 : _("Orphans"));
5147 purple_blist_add_buddy(b, NULL, g, NULL); 5186 purple_blist_add_buddy(b, NULL, g, NULL);
5187
5188 /* Mobile users should always be online */
5189 if (b->name[0] == '+') {
5190 purple_prpl_got_user_status(account,
5191 purple_buddy_get_name(b),
5192 OSCAR_STATUS_ID_AVAILABLE, NULL);
5193 purple_prpl_got_user_status(account,
5194 purple_buddy_get_name(b),
5195 OSCAR_STATUS_ID_MOBILE, NULL);
5196 }
5197
5148 } 5198 }
5149 5199
5150 g_free(gname_utf8); 5200 g_free(gname_utf8);
5151 g_free(alias_utf8); 5201 g_free(alias_utf8);
5152 5202