Create /typing endpoint similar to /messages endpoint
Endpoint should accept start and stop events
Write code to send events to recipient(similar to messages endpoint)
Write test to send start and stop notification to endpoint
Write test to subscribe to typing event
Write test to subscribe, then send, and check that it receives the notification
Write test to subscribe, send stop and check that it receives stop notification
Client
Write code to send notification to endpoint(similar to sending message)
Write code that sends this notification when user starts typing
Write test that checks that start notification is sent every ten seconds when user starts typing
Write code that resends the notification when every 10 seconds
Write test that checks that notification is sent every ten seconds
Write code that sends"stop" notification when compose field is cleared or ten seconds after the person stops typing
Write test that checks that stop notification is sent when compose field goes from non empty to empty and test that it is sent 10 seconds after user has stopped editing
Write code that sends stop and new event when thread is changed
Write test that checks that both stop and start events are sent when thread is changed
Write code that subscribes to start and stop events
Front end
Write code that displays typing indicator when start event is received
Write test that checks that typing indicator is displayed when start event is received
Write code that hides typing indicator when stop event is received
Write test that checks that typing indicator is hidden when stop event is received
Write code that starts 15s timeout after getting a typing notification and hides typing indicator after timeout
Write test that checks that typing indicator is hidden 15 seconds after the typing notification event
Notes
Period after which indicator is hidden should be configurable(constant on top of JS code) currently 15s
Frequency at which still typing notifications are sent should be configurable, currently 10s
Period after which stop notification should be sent should be configurable, currently 10s
Server side
Client
Front end
Notes