Add last typing update timestamp to check intended action of available presence properly

This commit is contained in:
Tulir Asokan 2018-08-24 22:06:17 +03:00
parent 0b7d23e897
commit 5eacaafc93
2 changed files with 4 additions and 1 deletions

View file

@ -133,6 +133,7 @@ type Puppet struct {
log log.Logger
typingIn types.MatrixRoomID
typingAt int64
MXID types.MatrixUserID
}

View file

@ -267,15 +267,17 @@ func (user *User) HandlePresence(info whatsapp_ext.Presence) {
case whatsapp_ext.PresenceUnavailable:
puppet.Intent().SetPresence("offline")
case whatsapp_ext.PresenceAvailable:
if len(puppet.typingIn) > 0 {
if len(puppet.typingIn) > 0 && puppet.typingAt + 15 > time.Now().Unix() {
puppet.Intent().UserTyping(puppet.typingIn, false, 0)
puppet.typingIn = ""
puppet.typingAt = 0
} else {
puppet.Intent().SetPresence("online")
}
case whatsapp_ext.PresenceComposing:
portal := user.GetPortalByJID(info.JID)
puppet.typingIn = portal.MXID
puppet.typingAt = time.Now().Unix()
puppet.Intent().UserTyping(portal.MXID, true, 15 * 1000)
}
}