libpurple/protocols/facebook/facebook.c

branch
facebook
changeset 37276
853fadf2e250
parent 37275
9e295f087bf6
child 37281
2b60f30897d9
--- a/libpurple/protocols/facebook/facebook.c	Wed Jun 24 18:13:18 2015 -0400
+++ b/libpurple/protocols/facebook/facebook.c	Thu Jun 25 20:48:26 2015 -0400
@@ -64,30 +64,26 @@
 }
 
 static void
-fb_cb_icon_fetch(PurpleHttpConnection *con, PurpleHttpResponse *res,
-                 gpointer data)
+fb_cb_data_icon(PurpleHttpConnection *con, PurpleHttpResponse *res,
+                gpointer data)
 {
 	const gchar *csum;
 	const gchar *name;
 	const gchar *str;
 	FbApi *api;
-	FbData *fata;
+	FbDataIcon *icon = data;
 	FbHttpParams *params;
 	GError *err = NULL;
 	gsize size;
 	guchar *idata;
 	PurpleAccount *acct;
-	PurpleBuddy *bdy = data;
-	PurpleConnection *gc;
 	PurpleHttpRequest *req;
 
-	acct = purple_buddy_get_account(bdy);
-	gc = purple_account_get_connection(acct);
-	fata = purple_connection_get_protocol_data(gc);
-	api = fb_data_get_api(fata);
+	acct = purple_buddy_get_account(icon->buddy);
+	api = fb_data_get_api(icon->fata);
 
 	if (!fb_http_error_chk(res, &err)) {
-		fb_cb_api_error(api, err, fata);
+		fb_cb_api_error(api, err, icon->fata);
 		g_error_free(err);
 		return;
 	}
@@ -97,7 +93,7 @@
 	params = fb_http_params_new_parse(str, TRUE);
 	csum = fb_http_params_get_str(params, "oh", &err);
 
-	name = purple_buddy_get_name(bdy);
+	name = purple_buddy_get_name(icon->buddy);
 	str = purple_http_response_get_data(res, &size);
 	idata = g_memdup(str, size);
 
@@ -149,17 +145,20 @@
 		if (bdy == NULL) {
 			bdy = purple_buddy_new(acct, uid, user->name);
 			purple_blist_add_buddy(bdy, NULL, grp, NULL);
-			purple_http_get(gc, fb_cb_icon_fetch, bdy, user->icon);
+			fb_data_icon_add(fata, bdy, user->icon,
+			                 fb_cb_data_icon);
 			continue;
 		}
 
 		csum = purple_buddy_icons_get_checksum_for_user(bdy);
 
 		if (!purple_strequal(csum, user->csum)) {
-			purple_http_get(gc, fb_cb_icon_fetch, bdy, user->icon);
+			fb_data_icon_add(fata, bdy, user->icon,
+			                 fb_cb_data_icon);
 		}
 	}
 
+	fb_data_icon_queue(fata);
 	purple_connection_update_progress(gc, _("Connecting"), 3, 4);
 	fb_api_connect(api);
 }

mercurial