diff src/protocols/msn/notification.c @ 5372:fa0217bec87e

[gaim-migrate @ 5748] The mobile state should now reflect the server under all cases. committer: Tailor Script <tailor@pidgin.im>
author Christian Hammond <chipx86@chipx86.com>
date Wed, 14 May 2003 07:50:26 +0000
parents 379beab3d157
children 0436e39c70cf
line wrap: on
line diff
--- a/src/protocols/msn/notification.c	Wed May 14 07:24:56 2003 +0000
+++ b/src/protocols/msn/notification.c	Wed May 14 07:50:26 2003 +0000
@@ -433,9 +433,7 @@
 {
 	MsnSession *session = servconn->session;
 	struct gaim_connection *gc = session->account->gc;
-	struct buddy *b;
 	const char *passport, *type, *value;
-	int status = 0;
 	MsnUser *user;
 
 	passport = params[1];
@@ -445,18 +443,10 @@
 	user = msn_users_find_with_passport(session->users, passport);
 
 	if (value != NULL) {
-		if (!strcmp(type, "MOB")) {
-			if ((b = gaim_find_buddy(gc->account, passport)) != NULL) {
-				if (GAIM_BUDDY_IS_ONLINE(b)) {
-					if (!strcmp(value, "Y"))
-						status = (b->uc | (1 << 5));
-					else if (!strcmp(value, "N"))
-						status = (b->uc ^ (1 << 5));
-
-					serv_got_update(gc, (char *)passport, 1, 0, 0, 0, status);
-				}
-			}
-		}
+		if (!strcmp(type, "MOB"))
+			user->mobile = (!strcmp(value, "Y"));
+		else if (!strcmp(type, "MBE"))
+			user->allow_pages = (!strcmp(value, "Y"));
 		else if (!strcmp(type, "PHH"))
 			msn_user_set_home_phone(user, msn_url_decode(value));
 		else if (!strcmp(type, "PHW"))
@@ -465,6 +455,15 @@
 			msn_user_set_mobile_phone(user, msn_url_decode(value));
 	}
 
+	if (!strcmp(type, "MOB") || !strcmp(type, "MBE")) {
+		struct buddy *b;
+
+		if ((b = gaim_find_buddy(gc->account, passport)) != NULL) {
+			if (GAIM_BUDDY_IS_ONLINE(b))
+				serv_got_update(gc, (char *)passport, 1, 0, 0, 0, b->uc);
+		}
+	}
+
 	return TRUE;
 }
 
@@ -669,7 +668,7 @@
 		while (session->lists.forward != NULL) {
 			MsnUser *user = session->lists.forward->data;
 			struct buddy *b;
-			
+
 			b = gaim_find_buddy(gc->account, msn_user_get_passport(user));
 
 			session->lists.forward = g_slist_remove(session->lists.forward,
@@ -709,11 +708,11 @@
 				b = gaim_buddy_new(gc->account,
 								   msn_user_get_passport(user), NULL);
 
-				b->proto_data = user;
-
 				gaim_blist_add_buddy(b, g, NULL);
 			}
 
+			b->proto_data = user;
+
 			serv_got_alias(gc, (char *)msn_user_get_passport(user),
 						   (char *)msn_user_get_name(user));
 		}