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:
authorhimselfv <me@boku.ru>2019-01-04 12:58:26 +0300
committerhimselfv <me@boku.ru>2019-01-04 12:58:26 +0300
commitd9e54669e0278892a0c346f6725b10f80be05a7b (patch)
tree2b38a9abd25cc6707f99efcd3dcc7e3a27b32408
parentb405173ea4bafce50546f6a56755cd9566bf7b70 (diff)
Turning image message into non-PURPLE_MESSAGE_SYSTEM
-rw-r--r--skypeweb/skypeweb_contacts.c25
-rw-r--r--skypeweb/skypeweb_contacts.h4
-rw-r--r--skypeweb/skypeweb_messages.c9
3 files changed, 28 insertions, 10 deletions
diff --git a/skypeweb/skypeweb_contacts.c b/skypeweb/skypeweb_contacts.c
index 363f75f..96ac099 100644
--- a/skypeweb/skypeweb_contacts.c
+++ b/skypeweb/skypeweb_contacts.c
@@ -33,6 +33,15 @@ static void purple_conversation_write_system_message_ts(
purple_message_set_time(pmsg, ts);
purple_conversation_write_message(conv, pmsg);
}
+static void purple_conversation_write_img_message_ts(
+ PurpleConversation *conv, const gchar *msg, PurpleMessageFlags flags,
+ time_t ts, const char* who) {
+ PurpleMessage *pmsg = purple_message_new_system(msg, flags);
+ pmsg->who = g_strdup(who); //to non-const
+ purple_message_set_time(pmsg, ts);
+ purple_conversation_write_message(conv, pmsg);
+ g_free(pmsg->who);
+}
// Check that the conversation hasn't been closed
static gboolean
@@ -127,6 +136,7 @@ skypeweb_get_icon(PurpleBuddy *buddy)
typedef struct SkypeImgMsgContext_ {
PurpleConversation *conv;
time_t composetimestamp;
+ gchar* from;
} SkypeImgMsgContext;
static void
@@ -141,6 +151,8 @@ skypeweb_got_imagemessage(PurpleHttpConnection *http_conn, PurpleHttpResponse *r
SkypeImgMsgContext *ctx = user_data;
PurpleConversation *conv = ctx->conv;
time_t ts = ctx->composetimestamp;
+ gchar* ctx_from = ctx->from;
+ ctx->from = NULL;
g_free(ctx);
// Conversation could have been closed before we retrieved the image
@@ -159,12 +171,13 @@ skypeweb_got_imagemessage(PurpleHttpConnection *http_conn, PurpleHttpResponse *r
image = purple_image_new_from_data(g_memdup(url_text, len), len);
icon_id = purple_image_store_add(image);
msg_tmp = g_strdup_printf("<img id='%d'>", icon_id);
- purple_conversation_write_system_message_ts(conv, msg_tmp, PURPLE_MESSAGE_NO_LOG | PURPLE_MESSAGE_IMAGES, ts);
+ purple_conversation_write_img_message_ts(conv, msg_tmp, PURPLE_MESSAGE_NO_LOG | PURPLE_MESSAGE_IMAGES, ts, ctx_from);
g_free(msg_tmp);
+ g_free(ctx_from);
}
void
-skypeweb_download_uri_to_conv(SkypeWebAccount *sa, const gchar *uri, PurpleConversation *conv, time_t ts)
+skypeweb_download_uri_to_conv(SkypeWebAccount *sa, const gchar *uri, PurpleConversation *conv, time_t ts, const gchar* from)
{
gchar *url, *text;
PurpleHttpRequest *request;
@@ -186,19 +199,20 @@ skypeweb_download_uri_to_conv(SkypeWebAccount *sa, const gchar *uri, PurpleConve
SkypeImgMsgContext *ctx = g_new(SkypeImgMsgContext, 1);
ctx->composetimestamp = ts;
ctx->conv = conv;
+ ctx->from = g_strdup(from);
purple_http_request(sa->pc, request, skypeweb_got_imagemessage, ctx);
purple_http_request_unref(request);
url = purple_strreplace(uri, "imgt1", "imgpsh_fullsize");
text = g_strdup_printf("<a href=\"%s\">Click here to view full version</a>", url);
- purple_conversation_write_system_message_ts(conv, text, PURPLE_MESSAGE_SYSTEM, ts);
+ purple_conversation_write_img_message_ts(conv, text, PURPLE_MESSAGE_SYSTEM, ts, from);
g_free(url);
g_free(text);
}
void
-skypeweb_download_moji_to_conv(SkypeWebAccount *sa, const gchar *text, const gchar *url_thumbnail, PurpleConversation *conv, time_t ts)
+skypeweb_download_moji_to_conv(SkypeWebAccount *sa, const gchar *text, const gchar *url_thumbnail, PurpleConversation *conv, time_t ts, const gchar* from)
{
gchar *cdn_url_thumbnail;
PurpleHttpURL *httpurl;
@@ -215,10 +229,11 @@ skypeweb_download_moji_to_conv(SkypeWebAccount *sa, const gchar *text, const gch
SkypeImgMsgContext *ctx = g_new(SkypeImgMsgContext, 1);
ctx->composetimestamp = ts;
ctx->conv = conv;
+ ctx->from = g_strdup(from);
purple_http_request(sa->pc, request, skypeweb_got_imagemessage, ctx);
purple_http_request_unref(request);
- purple_conversation_write_system_message_ts(conv, text, PURPLE_MESSAGE_SYSTEM, ts);
+ purple_conversation_write_img_message_ts(conv, text, PURPLE_MESSAGE_SYSTEM, ts, from);
g_free(cdn_url_thumbnail);
purple_http_url_free(httpurl);
diff --git a/skypeweb/skypeweb_contacts.h b/skypeweb/skypeweb_contacts.h
index e30f985..6d837a1 100644
--- a/skypeweb/skypeweb_contacts.h
+++ b/skypeweb/skypeweb_contacts.h
@@ -22,9 +22,9 @@
#include "libskypeweb.h"
void skypeweb_get_icon(PurpleBuddy *buddy);
-void skypeweb_download_uri_to_conv(SkypeWebAccount *sa, const gchar *uri, PurpleConversation *conv, time_t ts);
+void skypeweb_download_uri_to_conv(SkypeWebAccount *sa, const gchar *uri, PurpleConversation *conv, time_t ts, const gchar* from);
void skypeweb_download_video_message(SkypeWebAccount *sa, const gchar *sid, PurpleConversation *conv);
-void skypeweb_download_moji_to_conv(SkypeWebAccount *sa, const gchar *text, const gchar *url_thumbnail, PurpleConversation *conv, time_t ts);
+void skypeweb_download_moji_to_conv(SkypeWebAccount *sa, const gchar *text, const gchar *url_thumbnail, PurpleConversation *conv, time_t ts, const gchar* from);
void skypeweb_present_uri_as_filetransfer(SkypeWebAccount *sa, const gchar *uri, const gchar *from);
PurpleXfer *skypeweb_new_xfer(PurpleConnection *pc, const char *who);
diff --git a/skypeweb/skypeweb_messages.c b/skypeweb/skypeweb_messages.c
index 8e6100d..aa29c58 100644
--- a/skypeweb/skypeweb_messages.c
+++ b/skypeweb/skypeweb_messages.c
@@ -331,7 +331,10 @@ process_message_resource(SkypeWebAccount *sa, JsonObject *resource)
PurpleXmlNode *blob = purple_xmlnode_from_str(content, -1);
const gchar *uri = purple_xmlnode_get_attrib(blob, "url_thumbnail");
- skypeweb_download_uri_to_conv(sa, uri, conv, composetimestamp);
+ from = skypeweb_contact_url_to_name(from);
+ g_return_if_fail(from);
+
+ skypeweb_download_uri_to_conv(sa, uri, conv, composetimestamp, from);
purple_xmlnode_free(blob);
} else {
purple_debug_warning("skypeweb", "Unhandled thread message resource messagetype '%s'\n", messagetype);
@@ -418,7 +421,7 @@ process_message_resource(SkypeWebAccount *sa, JsonObject *resource)
}
conv = PURPLE_CONVERSATION(imconv);
- skypeweb_download_uri_to_conv(sa, uri, conv, composetimestamp);
+ skypeweb_download_uri_to_conv(sa, uri, conv, composetimestamp, from);
}
purple_xmlnode_free(blob);
} else if (g_str_equal(messagetype, "RichText/Media_GenericFile")) {
@@ -564,7 +567,7 @@ process_message_resource(SkypeWebAccount *sa, JsonObject *resource)
conv = PURPLE_CONVERSATION(imconv);
- skypeweb_download_moji_to_conv(sa, text, url_thumbnail, conv, composetimestamp);
+ skypeweb_download_moji_to_conv(sa, text, url_thumbnail, conv, composetimestamp, from);
const gchar *message = _("The user sent a Moji");