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-12-14 05:41:06 +0300
committerEion Robb <eion@robbmob.com>2016-12-14 05:41:06 +0300
commit00f102c06b95226840b0c26553d926549a1b1a65 (patch)
treee6bcaeac86eaae9f4d6de1b5dcb0045a183b50be /skypeweb/skypeweb_messages.c
parent92c376f57934b7af4564332e0a1f7a75e0473b4e (diff)
Display server-side errors (if any) when sending messages
Diffstat (limited to 'skypeweb/skypeweb_messages.c')
-rw-r--r--skypeweb/skypeweb_messages.c25
1 files changed, 24 insertions, 1 deletions
diff --git a/skypeweb/skypeweb_messages.c b/skypeweb/skypeweb_messages.c
index c8e8a9f..e1763f2 100644
--- a/skypeweb/skypeweb_messages.c
+++ b/skypeweb/skypeweb_messages.c
@@ -1206,6 +1206,29 @@ skypeweb_set_idle(PurpleConnection *pc, int time)
static void
+skypeweb_sent_message_cb(SkypeWebAccount *sa, JsonNode *node, gpointer user_data)
+{
+ gchar *convname = user_data;
+ JsonObject *obj = NULL;
+
+ if (node != NULL && json_node_get_node_type(node) == JSON_NODE_OBJECT)
+ obj = json_node_get_object(node);
+
+ if (obj != NULL) {
+ if (json_object_has_member(obj, "errorCode")) {
+ PurpleConversation *conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_CHAT, convname, sa->account);
+ if (conv == NULL) {
+ purple_conv_present_error(skypeweb_strip_user_prefix(convname), sa->account, json_object_get_string_member(obj, "message"));
+ } else {
+ purple_conversation_write(conv, NULL, json_object_get_string_member(obj, "message"), PURPLE_MESSAGE_ERROR, time(NULL));
+ }
+ }
+ }
+
+ g_free(convname);
+}
+
+static void
skypeweb_send_message(SkypeWebAccount *sa, const gchar *convname, const gchar *message)
{
gchar *post, *url;
@@ -1238,7 +1261,7 @@ skypeweb_send_message(SkypeWebAccount *sa, const gchar *convname, const gchar *m
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);
+ skypeweb_post_or_get(sa, SKYPEWEB_METHOD_POST | SKYPEWEB_METHOD_SSL, sa->messages_host, url, post, skypeweb_sent_message_cb, g_strdup(convname), TRUE);
g_free(post);
json_object_unref(obj);