--- a/libpurple/protocols/facebook/api.c Sat Oct 22 02:16:30 2016 -0300
+++ b/libpurple/protocols/facebook/api.c Sat Oct 22 03:51:49 2016 -0300
@@ -1949,6 +1949,28 @@
+fb_api_user_icon_checksum(gchar *icon) + if (G_UNLIKELY(icon == NULL)) { + prms = fb_http_params_new_parse(icon, TRUE); + csum = fb_http_params_dup_str(prms, "oh", NULL); + fb_http_params_free(prms); + if (G_UNLIKELY(csum == NULL)) { + /* Revert to the icon URL as the unique checksum */ fb_api_cb_contact(PurpleHttpConnection *con, PurpleHttpResponse *res,
@@ -1956,7 +1978,6 @@
@@ -1978,7 +1999,7 @@
values = fb_json_values_new(node);
fb_json_values_add(values, FB_JSON_TYPE_STR, TRUE, "$.id");
fb_json_values_add(values, FB_JSON_TYPE_STR, TRUE, "$.name");
- fb_json_values_add(values, FB_JSON_TYPE_STR, TRUE,
+ fb_json_values_add(values, FB_JSON_TYPE_STR, FALSE, "$.profile_pic_large.uri");
fb_json_values_update(values, &err);
@@ -1994,14 +2015,7 @@
user.name = fb_json_values_next_str_dup(values, NULL);
user.icon = fb_json_values_next_str_dup(values, NULL);
- prms = fb_http_params_new_parse(user.icon, TRUE);
- user.csum = fb_http_params_dup_str(prms, "oh", NULL);
- fb_http_params_free(prms);
- if (G_UNLIKELY(user.csum == NULL)) {
- /* Revert to the icon URL as the unique checksum */
- user.csum = g_strdup(user.icon);
+ user.csum = fb_api_user_icon_checksum(user.icon); g_signal_emit_by_name(api, "contact", &user);
fb_api_user_reset(&user, TRUE);
@@ -2032,7 +2046,6 @@
FbApiPrivate *priv = api->priv;
@@ -2051,7 +2064,7 @@
"$.represented_profile.friendship_status");
fb_json_values_add(values, FB_JSON_TYPE_STR, TRUE,
"$.structured_name.text");
- fb_json_values_add(values, FB_JSON_TYPE_STR, TRUE,
+ fb_json_values_add(values, FB_JSON_TYPE_STR, FALSE, fb_json_values_set_array(values, FALSE, "$.viewer.messenger_contacts"
@@ -2072,14 +2085,7 @@
user->name = fb_json_values_next_str_dup(values, NULL);
user->icon = fb_json_values_next_str_dup(values, NULL);
- prms = fb_http_params_new_parse(user->icon, TRUE);
- user->csum = fb_http_params_dup_str(prms, "oh", NULL);
- fb_http_params_free(prms);
- if (G_UNLIKELY(user->csum == NULL)) {
- /* Revert to the icon URL as the unique checksum */
- user->csum = g_strdup(user->icon);
+ user->csum = fb_api_user_icon_checksum(user->icon); users = g_slist_prepend(users, user);