diff --git a/backend/internal/datasaver/messages.go b/backend/internal/datasaver/messages.go index 1e774888d..c594f7ed9 100644 --- a/backend/internal/datasaver/messages.go +++ b/backend/internal/datasaver/messages.go @@ -61,6 +61,16 @@ func (mi *Saver) InsertMessage(sessionID uint64, msg Message) error { return mi.pg.InsertIOSScreenEnter(sessionID, m) case *IOSCrash: return mi.pg.InsertIOSCrash(sessionID, m) + + case *RawErrorEvent: + return mi.pg.InsertWebErrorEvent(sessionID, &ErrorEvent{ + MessageID: m.Meta().Index, // TODO: is it possible to catch panic here??? + Timestamp: m.Timestamp, + Source: m.Source, + Name: m.Name, + Message: m.Message, + Payload: m.Payload, + }) } return nil // "Not implemented" } diff --git a/backend/internal/handlers/custom/eventMapper.go b/backend/internal/handlers/custom/eventMapper.go index 5d118ff7d..f1bd4cafe 100644 --- a/backend/internal/handlers/custom/eventMapper.go +++ b/backend/internal/handlers/custom/eventMapper.go @@ -46,17 +46,6 @@ func (b *EventMapper) Build() Message { func (b *EventMapper) Handle(message Message, messageID uint64, timestamp uint64) Message { switch msg := message.(type) { - case *RawErrorEvent: - // !!! This won't be handled because the Meta() timestamp emitted by `integrations` will be 0 - // TODO: move to db directly - return &ErrorEvent{ - MessageID: messageID, - Timestamp: msg.Timestamp, - Source: msg.Source, - Name: msg.Name, - Message: msg.Message, - Payload: msg.Payload, - } case *MouseClick: if msg.Label != "" { return &ClickEvent{ diff --git a/backend/pkg/messages/batch.go b/backend/pkg/messages/batch.go index 850f22de9..9600f24a5 100644 --- a/backend/pkg/messages/batch.go +++ b/backend/pkg/messages/batch.go @@ -40,6 +40,9 @@ func ReadBatchReader(reader io.Reader, messageHandler func(Message)) error { timestamp = int64(m.Timestamp) // TODO(?): replace timestamp type to int64 everywhere (including encoding part in tracker) // No skipping here for making it easy to encode back the same sequence of message // continue readLoop + case *SessionStart: + // Save session start timestamp for collecting "empty" sessions + timestamp = int64(m.Timestamp) } msg.Meta().Index = index msg.Meta().Timestamp = timestamp