55 lines
1.1 KiB
Go
55 lines
1.1 KiB
Go
package builder
|
|
|
|
import (
|
|
. "openreplay/backend/pkg/messages"
|
|
)
|
|
|
|
|
|
const CLICK_RELATION_TIME = 1400
|
|
|
|
type deadClickDetector struct {
|
|
lastMouseClick *MouseClick
|
|
lastTimestamp uint64
|
|
lastMessageID uint64
|
|
}
|
|
|
|
|
|
func (d *deadClickDetector) HandleReaction(timestamp uint64) *IssueEvent {
|
|
var i *IssueEvent
|
|
if d.lastMouseClick != nil && d.lastTimestamp + CLICK_RELATION_TIME < timestamp {
|
|
i = &IssueEvent{
|
|
Type: "dead_click",
|
|
ContextString: d.lastMouseClick.Label,
|
|
Timestamp: d.lastTimestamp,
|
|
MessageID: d.lastMessageID,
|
|
}
|
|
}
|
|
d.lastMouseClick = nil
|
|
d.lastTimestamp = 0
|
|
d.lastMessageID = 0
|
|
return i
|
|
}
|
|
|
|
func (d *deadClickDetector) HandleMessage(msg Message, messageID uint64, timestamp uint64) *IssueEvent {
|
|
var i *IssueEvent
|
|
switch m := msg.(type) {
|
|
case *MouseClick:
|
|
i = d.HandleReaction(timestamp)
|
|
d.lastMouseClick = m
|
|
d.lastTimestamp = timestamp
|
|
d.lastMessageID = messageID
|
|
case *SetNodeAttribute,
|
|
*RemoveNodeAttribute,
|
|
*CreateElementNode,
|
|
*CreateTextNode,
|
|
*MoveNode,
|
|
*RemoveNode,
|
|
*SetCSSData,
|
|
*CSSInsertRule,
|
|
*CSSDeleteRule:
|
|
i = d.HandleReaction(timestamp)
|
|
}
|
|
return i
|
|
}
|
|
|
|
|