Add a typing-state property to Purple.Conversation
Review Request #3409 — Created Aug. 16, 2024 and submitted — Latest diff uploaded
This property tracks the typing state of the libpurple user in the conversation. User interfaces are expected to set this property to typing whenever the user's input could be considered part of the message. When the state changes to typing, a timeout will be added to set the state to paused. This timeout is reset each time the property is set to typing again. If that timeout expires, a new timeout will be added to set the state to none. When the conversation is created, the typing-state properties on the Conversation and the ConversationMember of the libpurple user are bound so user interfaces can treat that ConversationMember like any other. The conversation properties unit test was updated to verify that the property plumbing is in place. However, no other unit tests were created as the timeouts would add too much time to the tests.
Ran the unit tests and temporarily added some code to pidgin to set the typing state and verified the timeouts worked as intended.