diff options
author | Gary Kramlich <grim@reaperworld.com> | 2020-10-03 05:58:21 -0500 |
---|---|---|
committer | Gary Kramlich <grim@reaperworld.com> | 2020-10-03 05:58:21 -0500 |
commit | cac0124838270bd3be2004e271c2e91e583d6f08 (patch) | |
tree | 5cec70b62de32748633f971b86dc5da80b797102 /libpurple/server.c | |
parent | d4bafb96a107397b9d1edeaafb1512aba6212962 (diff) | |
download | pidgin-cac0124838270bd3be2004e271c2e91e583d6f08.tar.gz |
PurpleMessage cleanups from hell
Clean up libpurple/message.[ch] and remove the messages hash table as its current implementation will not fit our future needs
add a content-type property to PurpleMessage
Convert message timestamps from time_t to GDateTime and set default values
Make purple_message_new_outgoing take a parameter for the author.
Testing Done:
messages sent on bonjour, irc privmsg, irc chat, `/me` is broken i think unrelated.
Reviewed at https://reviews.imfreedom.org/r/124/
Diffstat (limited to 'libpurple/server.c')
-rw-r--r-- | libpurple/server.c | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/libpurple/server.c b/libpurple/server.c index 35fcd67cc3..ff9e8f267f 100644 --- a/libpurple/server.c +++ b/libpurple/server.c @@ -556,6 +556,7 @@ void purple_serv_got_im(PurpleConnection *gc, const char *who, const char *msg, pmsg = purple_message_new_incoming(name, message, flags, mtime); purple_conversation_write_message(PURPLE_CONVERSATION(im), pmsg); g_free(message); + g_object_unref(G_OBJECT(pmsg)); /* * Don't autorespond if: @@ -622,12 +623,15 @@ void purple_serv_got_im(PurpleConnection *gc, const char *who, const char *msg, if (!(flags & PURPLE_MESSAGE_AUTO_RESP)) { PurpleMessage *msg; + const gchar *me = purple_account_get_name_for_display(account); - msg = purple_message_new_outgoing(name, + msg = purple_message_new_outgoing(me, name, away_msg, PURPLE_MESSAGE_AUTO_RESP); purple_serv_send_im(gc, msg); purple_conversation_write_message(PURPLE_CONVERSATION(im), msg); + + g_object_unref(G_OBJECT(msg)); } } } @@ -890,16 +894,23 @@ void purple_serv_got_chat_in(PurpleConnection *g, int id, const char *who, purple_signal_emit(purple_conversations_get_handle(), "received-chat-msg", purple_connection_get_account(g), who, message, chat, flags); - if (flags & PURPLE_MESSAGE_RECV) + if (flags & PURPLE_MESSAGE_RECV) { pmsg = purple_message_new_incoming(who, message, flags, mtime); - else { - pmsg = purple_message_new_outgoing(who, message, flags); - purple_message_set_time(pmsg, mtime); + } else { + PurpleAccount *account = purple_connection_get_account(g); + GDateTime *dt = g_date_time_new_from_unix_local((gint64)mtime); + const gchar *me = purple_account_get_name_for_display(account); + + pmsg = purple_message_new_outgoing(me, who, message, flags); + purple_message_set_timestamp(pmsg, dt); + g_date_time_unref(dt); } purple_conversation_write_message(PURPLE_CONVERSATION(chat), pmsg); g_free(angel); g_free(buffy); + + g_object_unref(G_OBJECT(pmsg)); } void purple_serv_send_file(PurpleConnection *gc, const char *who, const char *file) |