Task list for Zulip typing indicators

Server side

  • 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