Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/EionRobb/skype4pidgin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEion Robb <eion@robbmob.com>2014-12-01 08:44:07 +0300
committerEion Robb <eion@robbmob.com>2014-12-01 08:44:07 +0300
commitedeb6bcf8657f3ee4d3ddd027f958fc4c0d44d65 (patch)
tree026e16b6dcf4a07f845f8f1ac4037b6a32115342
parent9d240e67a4e5d7366031a551c478337b111ccca3 (diff)
SkypeWeb : Fix for all buddies showing as offline because we weren't asking for any presence events for them
-rw-r--r--skypeweb/skypeweb_contacts.c2
-rw-r--r--skypeweb/skypeweb_messages.c37
-rw-r--r--skypeweb/skypeweb_messages.h3
3 files changed, 42 insertions, 0 deletions
diff --git a/skypeweb/skypeweb_contacts.c b/skypeweb/skypeweb_contacts.c
index 6b35fd3..db77546 100644
--- a/skypeweb/skypeweb_contacts.c
+++ b/skypeweb/skypeweb_contacts.c
@@ -2,6 +2,7 @@
#include "skypeweb_contacts.h"
#include "skypeweb_connection.h"
+#include "skypeweb_messages.h"
#include "skypeweb_util.h"
static guint active_icon_downloads = 0;
@@ -432,6 +433,7 @@ skypeweb_get_friend_list_cb(SkypeWebAccount *sa, JsonNode *node, gpointer user_d
if (users_to_fetch)
{
skypeweb_get_friend_profiles(sa, users_to_fetch);
+ skypeweb_subscribe_to_contact_status(sa, users_to_fetch);
g_slist_free(users_to_fetch);
}
}
diff --git a/skypeweb/skypeweb_messages.c b/skypeweb/skypeweb_messages.c
index daa8069..8147be1 100644
--- a/skypeweb/skypeweb_messages.c
+++ b/skypeweb/skypeweb_messages.c
@@ -142,6 +142,43 @@ skypeweb_poll(SkypeWebAccount *sa)
}
+void
+skypeweb_subscribe_to_contact_status(SkypeWebAccount *sa, GSList *contacts)
+{
+ const gchar *contacts_url = "/v1/users/ME/contacts";
+ gchar *post;
+ GSList *cur = contacts;
+ JsonObject *obj;
+ JsonArray *contacts_array;
+
+ if (contacts == NULL)
+ return;
+
+ obj = json_object_new();
+ contacts_array = json_array_new();
+
+ do {
+ JsonObject *contact = json_object_new();
+ gchar *id;
+
+ id = g_strconcat("8:", cur->data, NULL);
+ json_object_set_string_member(contact, "id", id);
+ json_array_add_object_element(contacts_array, contact);
+
+ g_free(id);
+ } while((cur = g_slist_next(cur)));
+
+ json_object_set_array_member(obj, "contacts", contacts_array);
+ post = skypeweb_jsonobj_to_string(obj);
+
+ skypeweb_post_or_get(sa, SKYPEWEB_METHOD_POST | SKYPEWEB_METHOD_SSL, SKYPEWEB_MESSAGES_HOST, contacts_url, post, NULL, NULL, TRUE);
+
+ g_free(post);
+ json_object_unref(obj);
+ json_array_unref(contacts_array);
+}
+
+
static void
skypeweb_subscribe_cb(SkypeWebAccount *sa, JsonNode *node, gpointer user_data)
{
diff --git a/skypeweb/skypeweb_messages.h b/skypeweb/skypeweb_messages.h
index 2fd39e0..fe46377 100644
--- a/skypeweb/skypeweb_messages.h
+++ b/skypeweb/skypeweb_messages.h
@@ -11,4 +11,7 @@ guint skypeweb_send_typing(PurpleConnection *pc, const gchar *name, PurpleTyping
void skypeweb_poll(SkypeWebAccount *sa);
void skypeweb_get_registration_token(SkypeWebAccount *sa);
+
+void skypeweb_subscribe_to_contact_status(SkypeWebAccount *sa, GSList *contacts);
+
#endif /* SKYPEWEB_MESSAGES_H */