bridgev2/portal: log mismatching disappearing timers in events
Some checks are pending
Go / Lint (latest) (push) Waiting to run
Go / Build (old, libolm) (push) Waiting to run
Go / Build (latest, libolm) (push) Waiting to run
Go / Build (old, goolm) (push) Waiting to run
Go / Build (latest, goolm) (push) Waiting to run

This commit is contained in:
Tulir Asokan 2025-10-28 14:48:06 +02:00
commit bea28c1381
2 changed files with 32 additions and 2 deletions

View file

@ -37,6 +37,16 @@ type DisappearingSetting struct {
DisappearAt time.Time
}
func DisappearingSettingFromEvent(evt *event.BeeperDisappearingTimer) DisappearingSetting {
if evt == nil || evt.Type == event.DisappearingTypeNone {
return DisappearingSetting{}
}
return DisappearingSetting{
Type: evt.Type,
Timer: evt.Timer.Duration,
}
}
func (ds DisappearingSetting) Normalize() DisappearingSetting {
if ds.Type == event.DisappearingTypeNone {
ds.Timer = 0

View file

@ -1122,6 +1122,16 @@ func (portal *Portal) handleMatrixMessage(ctx context.Context, sender *UserLogin
}
}
}
var messageTimer *event.BeeperDisappearingTimer
if msgContent != nil {
messageTimer = msgContent.BeeperDisappearingTimer
}
if messageTimer != nil && *portal.Disappear.ToEventContent() != *messageTimer {
log.Warn().
Any("event_timer", messageTimer).
Any("portal_timer", portal.Disappear.ToEventContent()).
Msg("Mismatching disappearing timer in event")
}
wrappedMsgEvt := &MatrixMessage{
MatrixEventBase: MatrixEventBase[*event.MessageEventContent]{
@ -1198,12 +1208,16 @@ func (portal *Portal) handleMatrixMessage(ctx context.Context, sender *UserLogin
}
portal.sendSuccessStatus(ctx, evt, resp.StreamOrder, message.MXID)
}
if portal.Disappear.Type != event.DisappearingTypeNone {
ds := portal.Disappear
if messageTimer != nil {
ds = database.DisappearingSettingFromEvent(messageTimer)
}
if ds.Type != event.DisappearingTypeNone {
go portal.Bridge.DisappearLoop.Add(ctx, &database.DisappearingMessage{
RoomID: portal.MXID,
EventID: message.MXID,
Timestamp: message.Timestamp,
DisappearingSetting: portal.Disappear.StartingAt(message.Timestamp),
DisappearingSetting: ds.StartingAt(message.Timestamp),
})
}
if resp.Pending {
@ -4082,6 +4096,12 @@ func (portal *Portal) sendRoomMeta(
Msg("Failed to set room metadata")
return false
}
if eventType == event.StateBeeperDisappearingTimer {
// TODO remove this debug log at some point
zerolog.Ctx(ctx).Debug().
Any("content", content).
Msg("Sent new disappearing timer event")
}
return true
}