(purple) IMs as rooms

This commit is contained in:
Jaidyn Ann 2021-06-29 20:02:45 -05:00
parent f0256babc1
commit 301e22bcb3

View File

@ -55,7 +55,7 @@ PurpleApp::PurpleApp()
_GetProtocolsInfo(); _GetProtocolsInfo();
new BMessageRunner(this, new BMessage(G_MAIN_LOOP), 100000, -1); new BMessageRunner(this, new BMessage(G_MAIN_LOOP), 100000, -1);
new BMessageRunner(this, new BMessage(CHECK_APP), 30000000, -1); new BMessageRunner(this, new BMessage(CHECK_APP), 10000000, -1);
} }
@ -185,15 +185,19 @@ PurpleApp::ImMessage(BMessage* msg)
{ {
PurpleConversation* conv = _ConversationFromMessage(msg); PurpleConversation* conv = _ConversationFromMessage(msg);
PurpleConvChat* chat = purple_conversation_get_chat_data(conv); PurpleConvChat* chat = purple_conversation_get_chat_data(conv);
if (chat == NULL) return; PurpleConvIm* im = purple_conversation_get_im_data(conv);
if (chat == NULL && im == NULL) return;
BStringList user_ids; BStringList user_ids;
if (im != NULL)
user_ids.Add(BString(purple_conversation_get_name(conv)));
else {
GList* users = purple_conv_chat_get_users(chat); GList* users = purple_conv_chat_get_users(chat);
for (int i = 0; users != NULL; users = users->next) { for (int i = 0; users != NULL; users = users->next) {
PurpleConvChatBuddy* user = (PurpleConvChatBuddy*)users->data; PurpleConvChatBuddy* user = (PurpleConvChatBuddy*)users->data;
user_ids.Add(BString(purple_conv_chat_cb_get_name(user))); user_ids.Add(BString(purple_conv_chat_cb_get_name(user)));
} }
}
BMessage parts(IM_MESSAGE); BMessage parts(IM_MESSAGE);
parts.AddInt32("im_what", IM_ROOM_PARTICIPANTS); parts.AddInt32("im_what", IM_ROOM_PARTICIPANTS);
@ -530,6 +534,10 @@ init_signals()
&handle, PURPLE_CALLBACK(signal_received_chat_msg), NULL); &handle, PURPLE_CALLBACK(signal_received_chat_msg), NULL);
purple_signal_connect(purple_conversations_get_handle(), "received-im-msg", purple_signal_connect(purple_conversations_get_handle(), "received-im-msg",
&handle, PURPLE_CALLBACK(signal_received_chat_msg), NULL); &handle, PURPLE_CALLBACK(signal_received_chat_msg), NULL);
purple_signal_connect(purple_conversations_get_handle(), "sent-chat-msg",
&handle, PURPLE_CALLBACK(signal_sent_chat_msg), NULL);
purple_signal_connect(purple_conversations_get_handle(), "sent-im-msg",
&handle, PURPLE_CALLBACK(signal_sent_im_msg), NULL);
purple_signal_connect(purple_conversations_get_handle(), "chat-buddy-joined", purple_signal_connect(purple_conversations_get_handle(), "chat-buddy-joined",
&handle, PURPLE_CALLBACK(signal_chat_buddy_joined), NULL); &handle, PURPLE_CALLBACK(signal_chat_buddy_joined), NULL);
} }
@ -598,9 +606,13 @@ static void
signal_received_chat_msg(PurpleAccount* account, char* sender, char* message, signal_received_chat_msg(PurpleAccount* account, char* sender, char* message,
PurpleConversation* conv, PurpleMessageFlags flags) PurpleConversation* conv, PurpleMessageFlags flags)
{ {
BString chat_id = BString(purple_conversation_get_name(conv));
if (chat_id.IsEmpty() == true)
chat_id = sender;
BMessage chat(IM_MESSAGE); BMessage chat(IM_MESSAGE);
chat.AddInt32("im_what", IM_MESSAGE_RECEIVED); chat.AddInt32("im_what", IM_MESSAGE_RECEIVED);
chat.AddString("chat_id", purple_conversation_get_name(conv)); chat.AddString("chat_id", chat_id);
chat.AddString("user_id", sender); chat.AddString("user_id", sender);
chat.AddString("body", message); chat.AddString("body", message);
((PurpleApp*)be_app)->SendMessage(account, chat); ((PurpleApp*)be_app)->SendMessage(account, chat);
@ -631,6 +643,7 @@ signal_sent_im_msg(PurpleAccount* account, const char* receiver,
sent.AddString("chat_id", receiver); sent.AddString("chat_id", receiver);
sent.AddString("user_id", purple_account_get_username(account)); sent.AddString("user_id", purple_account_get_username(account));
sent.AddString("body", message); sent.AddString("body", message);
sent.PrintToStream();
((PurpleApp*)be_app)->SendMessage(account, sent); ((PurpleApp*)be_app)->SendMessage(account, sent);
} }