--- a/hangouts_conversation.c Sat Sep 24 15:02:34 2016 -0300
+++ b/hangouts_conversation.c Mon Sep 26 20:46:16 2016 +1300
@@ -1470,12 +1470,30 @@
hangouts_send_typing(PurpleConnection *pc, const gchar *who, PurpleIMTypingState state)
+ PurpleConversation *conv; + ha = purple_connection_get_protocol_data(pc); + conv = PURPLE_CONVERSATION(purple_conversations_find_im_with_account(who, purple_connection_get_account(pc))); + g_return_val_if_fail(conv, -1); + return hangouts_conv_send_typing(conv, state, ha); +hangouts_conv_send_typing(PurpleConversation *conv, PurpleIMTypingState state, HangoutsAccount *ha) SetTypingRequest request;
ConversationId conversation_id;
- ha = purple_connection_get_protocol_data(pc);
- conv_id = g_hash_table_lookup(ha->one_to_ones_rev, who);
+ conv_id = purple_conversation_get_data(conv, "conv_id"); + if (PURPLE_IS_IM_CONVERSATION(conv)) { + conv_id = g_hash_table_lookup(ha->one_to_ones_rev, purple_conversation_get_name(conv)); + conv_id = purple_conversation_get_name(conv); g_return_val_if_fail(conv_id, -1); //TODO create new conversation for this new person
set_typing_request__init(&request);
--- a/hangouts_conversation.h Sat Sep 24 15:02:34 2016 -0300
+++ b/hangouts_conversation.h Mon Sep 26 20:46:16 2016 +1300
@@ -58,6 +58,7 @@
guint hangouts_send_typing(PurpleConnection *pc, const gchar *name, PurpleIMTypingState state);
+guint hangouts_conv_send_typing(PurpleConversation *conv, PurpleIMTypingState state, HangoutsAccount *ha); void hangouts_get_users_presence(HangoutsAccount *ha, GList *user_ids);
--- a/libhangouts.c Sat Sep 24 15:02:34 2016 -0300
+++ b/libhangouts.c Mon Sep 26 20:46:16 2016 +1300
@@ -355,6 +355,7 @@
purple_signal_connect(purple_blist_get_handle(), "blist-node-removed", account, PURPLE_CALLBACK(hangouts_blist_node_removed), NULL);
purple_signal_connect(purple_blist_get_handle(), "blist-node-aliased", account, PURPLE_CALLBACK(hangouts_blist_node_aliased), NULL);
purple_signal_connect(purple_conversations_get_handle(), "conversation-updated", account, PURPLE_CALLBACK(hangouts_mark_conversation_seen), NULL);
+ purple_signal_connect(purple_conversations_get_handle(), "chat-conversation-typing", account, PURPLE_CALLBACK(hangouts_conv_send_typing), ha); ha->active_client_timeout = purple_timeout_add_seconds(HANGOUTS_ACTIVE_CLIENT_TIMEOUT, ((GSourceFunc) hangouts_set_active_client), pc);