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>2016-09-26 23:10:20 +0300
committerEion Robb <eion@robbmob.com>2016-09-26 23:10:20 +0300
commit7ed6895fcf4d89334ce1c5b84a7aa667c6cb779c (patch)
tree0d66f651fbe7ce0c2c2eb03a73fb94bbdfc00740
parentf477d9eb42c924f50169e59421b47c1af593b19c (diff)
Support group typing notifications via the https://github.com/EionRobb/pidgin-groupchat-typing-notifications plugin
-rw-r--r--skypeweb/libskypeweb.c1
-rw-r--r--skypeweb/skypeweb_messages.c24
-rw-r--r--skypeweb/skypeweb_messages.h1
3 files changed, 26 insertions, 0 deletions
diff --git a/skypeweb/libskypeweb.c b/skypeweb/libskypeweb.c
index d27466d..1e618a0 100644
--- a/skypeweb/libskypeweb.c
+++ b/skypeweb/libskypeweb.c
@@ -334,6 +334,7 @@ skypeweb_login(PurpleAccount *account)
}
purple_signal_connect(purple_conversations_get_handle(), "conversation-updated", pc, PURPLE_CALLBACK(skypeweb_mark_conv_seen), NULL);
+ purple_signal_connect(purple_conversations_get_handle(), "chat-conversation-typing", account, PURPLE_CALLBACK(skypeweb_conv_send_typing), sa);
}
static void
diff --git a/skypeweb/skypeweb_messages.c b/skypeweb/skypeweb_messages.c
index 40e22d4..60c555e 100644
--- a/skypeweb/skypeweb_messages.c
+++ b/skypeweb/skypeweb_messages.c
@@ -1100,6 +1100,30 @@ skypeweb_get_registration_token(SkypeWebAccount *sa)
+guint
+skypeweb_conv_send_typing(PurpleConversation *conv, PurpleIMTypingState state, SkypeWebAccount *sa)
+{
+ gchar *post, *url;
+ JsonObject *obj;
+
+ url = g_strdup_printf("/v1/users/ME/conversations/%s/messages", purple_url_encode(purple_conversation_get_name(conv)));
+
+ obj = json_object_new();
+ json_object_set_int_member(obj, "clientmessageid", time(NULL));
+ json_object_set_string_member(obj, "content", "");
+ json_object_set_string_member(obj, "messagetype", state == PURPLE_IM_TYPING ? "Control/Typing" : "Control/ClearTyping");
+ json_object_set_string_member(obj, "contenttype", "text");
+
+ post = skypeweb_jsonobj_to_string(obj);
+
+ skypeweb_post_or_get(sa, SKYPEWEB_METHOD_POST | SKYPEWEB_METHOD_SSL, sa->messages_host, url, post, NULL, NULL, TRUE);
+
+ g_free(post);
+ json_object_unref(obj);
+ g_free(url);
+
+ return 5;
+}
guint
skypeweb_send_typing(PurpleConnection *pc, const gchar *name, PurpleIMTypingState state)
diff --git a/skypeweb/skypeweb_messages.h b/skypeweb/skypeweb_messages.h
index 1e01539..3138780 100644
--- a/skypeweb/skypeweb_messages.h
+++ b/skypeweb/skypeweb_messages.h
@@ -25,6 +25,7 @@ gint skypeweb_send_im(PurpleConnection *pc, const gchar *who, const gchar *msg,
gint skypeweb_chat_send(PurpleConnection *pc, gint id, const gchar *message, PurpleMessageFlags flags);
void skypeweb_set_idle(PurpleConnection *pc, int time);
void skypeweb_set_status(PurpleAccount *account, PurpleStatus *status);
+guint skypeweb_conv_send_typing(PurpleConversation *conv, PurpleIMTypingState state, SkypeWebAccount *sa);
guint skypeweb_send_typing(PurpleConnection *pc, const gchar *name, PurpleIMTypingState state);
void skypeweb_poll(SkypeWebAccount *sa);
void skypeweb_get_registration_token(SkypeWebAccount *sa);