--- a/hangouts_auth.c Wed Oct 04 09:17:31 2017 +1300
+++ b/hangouts_auth.c Mon Oct 23 22:16:50 2017 +1300
@@ -264,9 +264,11 @@
hangouts_fetch_channel_sid(ha);
purple_connection_set_state(ha->pc, PURPLE_CONNECTION_CONNECTED);
//TODO trigger event instead
hangouts_get_self_info(ha);
hangouts_get_conversation_list(ha);
+ ha->poll_buddy_status_timeout = g_timeout_add_seconds(120, hangouts_poll_buddy_status, ha); --- a/hangouts_conversation.c Wed Oct 04 09:17:31 2017 +1300
+++ b/hangouts_conversation.c Mon Oct 23 22:16:50 2017 +1300
@@ -236,6 +236,31 @@
g_free(request.field_mask);
+hangouts_poll_buddy_status(gpointer userdata) + HangoutsAccount *ha = userdata; + GList *user_list = NULL; + if (!PURPLE_CONNECTION_IS_CONNECTED(ha->pc)) { + buddies = purple_blist_find_buddies(ha->account, NULL); + for(i = buddies; i; i = i->next) { + PurpleBuddy *buddy = i->data; + user_list = g_list_prepend(user_list, (gpointer) purple_buddy_get_name(buddy)); + hangouts_get_users_presence(ha, user_list); + g_list_free(user_list); static void hangouts_got_buddy_photo(PurpleHttpConnection *connection, PurpleHttpResponse *response, gpointer user_data);
--- a/hangouts_conversation.h Wed Oct 04 09:17:31 2017 +1300
+++ b/hangouts_conversation.h Mon Oct 23 22:16:50 2017 +1300
@@ -64,6 +64,7 @@
void hangouts_get_users_presence(HangoutsAccount *ha, GList *user_ids);
void hangouts_get_users_information(HangoutsAccount *ha, GList *user_ids);
void hangouts_get_info(PurpleConnection *pc, const gchar *who);
+gboolean hangouts_poll_buddy_status(gpointer ha_pointer); void hangouts_chat_leave_by_conv_id(PurpleConnection *pc, const gchar *conv_id, const gchar *who);
void hangouts_chat_leave(PurpleConnection *pc, int id);
--- a/libhangouts.c Wed Oct 04 09:17:31 2017 +1300
+++ b/libhangouts.c Mon Oct 23 22:16:50 2017 +1300
@@ -375,6 +375,7 @@
g_source_remove(ha->active_client_timeout);
g_source_remove(ha->channel_watchdog);
+ g_source_remove(ha->poll_buddy_status_timeout); purple_http_conn_cancel_all(pc);
--- a/libhangouts.h Wed Oct 04 09:17:31 2017 +1300
+++ b/libhangouts.h Mon Oct 23 22:16:50 2017 +1300
@@ -84,6 +84,7 @@
ActiveClientState active_client_state;
gint64 last_event_timestamp;
PurpleConversation *last_conversation_focused;
+ guint poll_buddy_status_timeout; GByteArray *channel_buffer;
--- a/purplecompat.h Wed Oct 04 09:17:31 2017 +1300
+++ b/purplecompat.h Mon Oct 23 22:16:50 2017 +1300
@@ -30,6 +30,7 @@
#define purple_blist_find_buddy purple_find_buddy
+#define purple_blist_find_buddies purple_find_buddies #define purple_blist_find_group purple_find_group
#define PURPLE_IS_BUDDY PURPLE_BLIST_NODE_IS_BUDDY
#define PURPLE_IS_CHAT PURPLE_BLIST_NODE_IS_CHAT