From bebec9759c8a3c1b5ce8174234e7639c440fcc7d Mon Sep 17 00:00:00 2001 From: Jan Palus Date: Mon, 15 Feb 2021 13:28:56 +0100 Subject: Fix direction of uri messages --- skypeweb/skypeweb_contacts.c | 8 +++++--- skypeweb/skypeweb_messages.c | 10 ++++------ skypeweb/skypeweb_messages.h | 1 + 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/skypeweb/skypeweb_contacts.c b/skypeweb/skypeweb_contacts.c index ecaab9e..5186be2 100644 --- a/skypeweb/skypeweb_contacts.c +++ b/skypeweb/skypeweb_contacts.c @@ -208,14 +208,16 @@ skypeweb_download_uri_to_conv(SkypeWebAccount *sa, const gchar *uri, SkypeWebURI url = g_strdup(uri); break; } + + gboolean from_self = skypeweb_is_user_self(sa, from); if (purple_strequal(purple_core_get_ui(), "BitlBee")) { // Bitlbee doesn't support images, so just plop a url to the image instead if (PURPLE_IS_IM_CONVERSATION(conv)) { - purple_serv_got_im(sa->pc, from, url, PURPLE_MESSAGE_RECV, ts); + purple_serv_got_im(sa->pc, from, url, from_self ? PURPLE_MESSAGE_SEND : PURPLE_MESSAGE_RECV, ts); } else if (PURPLE_IS_CHAT_CONVERSATION(conv)) { gchar *chatname = purple_conversation_get_data(conv, "chatname"); - purple_serv_got_chat_in(sa->pc, g_str_hash(chatname), from, PURPLE_MESSAGE_RECV, url, ts); + purple_serv_got_chat_in(sa->pc, g_str_hash(chatname), from, from_self ? PURPLE_MESSAGE_SEND : PURPLE_MESSAGE_RECV, url, ts); } g_free(url); @@ -234,7 +236,7 @@ skypeweb_download_uri_to_conv(SkypeWebAccount *sa, const gchar *uri, SkypeWebURI purple_http_request_unref(request); text = g_strdup_printf("Click here to view full %s", url, skypeweb_uri_type_name(uri_type)); - purple_conversation_write_img_message(conv, from, text, 0, ts); + purple_conversation_write_img_message(conv, from, text, from_self ? PURPLE_MESSAGE_SEND : PURPLE_MESSAGE_RECV, ts); g_free(url); g_free(text); diff --git a/skypeweb/skypeweb_messages.c b/skypeweb/skypeweb_messages.c index 71c7b5c..959fb31 100644 --- a/skypeweb/skypeweb_messages.c +++ b/skypeweb/skypeweb_messages.c @@ -28,7 +28,7 @@ static GString* make_last_timestamp_setting(const gchar *convname) { return rv; } -static gboolean +gboolean skypeweb_is_user_self(SkypeWebAccount *sa, const gchar *username) { if (!username || *username == 0) { return FALSE; @@ -434,15 +434,13 @@ process_message_resource(SkypeWebAccount *sa, JsonObject *resource) g_free(html); } else if (g_str_equal(messagetype, "RichText/UriObject") || g_str_equal(messagetype, "RichText/Media_Video")) { PurpleIMConversation *imconv; + const gchar* conv_buddy = skypeweb_is_user_self(sa, from) ? convbuddyname : from; - if (skypeweb_is_user_self(sa, from)) { - from = convbuddyname; - } if (from != NULL) { - imconv = purple_conversations_find_im_with_account(from, sa->account); + imconv = purple_conversations_find_im_with_account(conv_buddy, sa->account); if (imconv == NULL) { - imconv = purple_im_conversation_new(sa->account, from); + imconv = purple_im_conversation_new(sa->account, conv_buddy); } conv = PURPLE_CONVERSATION(imconv); diff --git a/skypeweb/skypeweb_messages.h b/skypeweb/skypeweb_messages.h index 98fcb60..f41eec6 100644 --- a/skypeweb/skypeweb_messages.h +++ b/skypeweb/skypeweb_messages.h @@ -68,5 +68,6 @@ void skype_web_get_offline_history(SkypeWebAccount *sa); void skypeweb_mark_conv_seen(PurpleConversation *conv, PurpleConversationUpdateType type); void skypeweb_gather_self_properties(SkypeWebAccount *sa); +gboolean skypeweb_is_user_self(SkypeWebAccount *sa, const gchar *username); #endif /* SKYPEWEB_MESSAGES_H */ -- cgit v1.2.3