Adds typing notifications for group chats in Pidgin
C Makefile
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
LICENSE
Makefile
README.md
grouptyping.c

README.md

Pidgin Groupchat Typing-Notifications

Adds typing notifications for multi-user group chats in Pidgin

capture_1474610788

Works with the Hangouts plugin, Skype plugin, Matrix plugin, Telegram and more.

For developers

This plugin relies on the PURPLE_CBFLAGS_TYPING flag being set with purple_conv_chat_user_set_flags() when a user is typing to display.

To listen to the event when the UI is typing in a group chat, attach to the chat-conversation-typing signal on the Purple conversations handle when logging in. Due to a race for when the group typing plugin is loaded and protocol plugins are loaded, you should only attach to the signal during the _login stage, but only once so that you don't receive multiple typing notifications, eg:

static gulong chat_conversation_typing_signal = 0;
static void prpl_login(PurpleAccount *account) {
  // ...
  // Your normal login code
  // ...
  
	if (!chat_conversation_typing_signal) {
		chat_conversation_typing_signal = purple_signal_connect(purple_conversations_get_handle(), "chat-conversation-typing", purple_connection_get_protocol(pc), PURPLE_CALLBACK(prpl_conv_send_typing), NULL);
	}
  // ...
}

guint
prpl_conv_send_typing(PurpleConversation *conv, PurpleIMTypingState state, gpointer *handle)
{
	PurpleConnection *pc;
	
	pc = purple_conversation_get_connection(conv);
	
	if (!PURPLE_CONNECTION_IS_CONNECTED(pc))
		return 0;
	
	if (g_strcmp0(purple_protocol_get_id(purple_connection_get_protocol(pc)), "prpl-your-prpl-id"))
		return 0;
  
  // Send typing over protocol
  
  // Return the timeout like you would for your prpl_send_typing()
  return 20;
}