--- a/hangouts_connection.c Thu Mar 08 08:43:44 2018 +1300
+++ b/hangouts_connection.c Thu Mar 08 09:09:02 2018 +1300
@@ -593,9 +593,13 @@
gchar *tidied_json = hangouts_json_tidy_blank_arrays(raw_response);
JsonArray *response_array = json_decode_array(tidied_json, -1);
+ const gchar *first_element = json_array_get_string_element(response_array, 0); + gboolean ignore_first_element = (first_element != NULL); - pblite_decode(response_message, response_array, /*Ignore First Item= */TRUE);
- purple_debug_info("hangouts", "A '%s' says '%s'\n", response_message->descriptor->name, json_array_get_string_element(response_array, 0));
+ pblite_decode(response_message, response_array, ignore_first_element); + if (ignore_first_element) { + purple_debug_info("hangouts", "A '%s' says '%s'\n", response_message->descriptor->name, first_element); if (purple_debug_is_verbose()) {
gchar *pretty_json = pblite_dump_json(response_message);
--- a/hangouts_conversation.c Thu Mar 08 08:43:44 2018 +1300
+++ b/hangouts_conversation.c Thu Mar 08 09:09:02 2018 +1300
@@ -690,6 +690,34 @@
hangouts_get_conversation_events(ha, conv_id, 0);
+hangouts_got_join_chat_from_url(HangoutsAccount *ha, OpenGroupConversationFromUrlResponse *response, gpointer user_data) + if (!response || !response->conversation_id || !response->conversation_id->id) { + purple_notify_error(ha->pc, _("Join from URL Error"), _("Could not join group from URL"), response->response_header ? response->response_header->error_description : _("Unknown Error"), purple_request_cpar_from_connection(pc)); + hangouts_get_conversation_events(ha, response->conversation_id->id, 0); +hangouts_join_chat_from_url(HangoutsAccount *ha, const gchar *url) + OpenGroupConversationFromUrlRequest request; + g_return_if_fail(url != NULL); + open_group_conversation_from_url_request__init(&request); + request.request_header = hangouts_get_request_header(ha); + request.url = (gchar *) url; + hangouts_pblite_open_group_conversation_from_url(ha, &request, hangouts_got_join_chat_from_url, NULL); + hangouts_request_header_free(request.request_header); hangouts_get_chat_name(GHashTable *data)
--- a/hangouts_conversation.h Thu Mar 08 08:43:44 2018 +1300
+++ b/hangouts_conversation.h Thu Mar 08 09:09:02 2018 +1300
@@ -34,6 +34,8 @@
void hangouts_join_chat(PurpleConnection *pc, GHashTable *data);
gchar *hangouts_get_chat_name(GHashTable *data);
+void hangouts_join_chat_from_url(HangoutsAccount *ha, const gchar *url); void hangouts_get_all_events(HangoutsAccount *ha, guint64 since_timestamp);
void hangouts_add_conversation_to_blist(HangoutsAccount *ha, Conversation *conversation, GHashTable *unique_user_ids);
--- a/libhangouts.c Thu Mar 08 08:43:44 2018 +1300
+++ b/libhangouts.c Thu Mar 08 09:09:02 2018 +1300
@@ -264,6 +264,23 @@
+hangouts_join_chat_by_url_action(PurpleProtocolAction *action) + PurpleConnection *pc = purple_protocol_action_get_connection(action); + HangoutsAccount *ha = purple_connection_get_protocol_data(pc); + purple_request_input(pc, _("Join chat..."), + _("Join a Hangouts group chat from the invite URL..."), + NULL, FALSE, FALSE, "https://hangouts.google.com/group/...", + _("_Join"), G_CALLBACK(hangouts_join_chat_from_url), + purple_request_cpar_from_connection(pc), #if !PURPLE_VERSION_CHECK(3, 0, 0)
@@ -279,6 +296,9 @@
act = purple_protocol_action_new(_("Search for friends..."), hangouts_search_users);
m = g_list_append(m, act);
+ act = purple_protocol_action_new(_("Join a group chat by URL..."), hangouts_join_chat_by_url_action); + m = g_list_append(m, act);