diff --git a/event/capabilities.d.ts b/event/capabilities.d.ts index 7f1dce05..27164a5f 100644 --- a/event/capabilities.d.ts +++ b/event/capabilities.d.ts @@ -117,7 +117,8 @@ export enum DisappearingType { export interface DisappearingTimerCapability { types: DisappearingType[] - timers: milliseconds[] + /** Allowed timer values. If omitted, any timer is allowed. */ + timers?: milliseconds[] /** * Whether clients should omit the empty disappearing_timer object in messages that they don't want to disappear * diff --git a/event/capabilities.go b/event/capabilities.go index 20f87bce..ebedb6a2 100644 --- a/event/capabilities.go +++ b/event/capabilities.go @@ -71,7 +71,7 @@ type FileFeatureMap map[CapabilityMsgType]*FileFeatures type DisappearingTimerCapability struct { Types []DisappearingType `json:"types"` - Timers []jsontime.Milliseconds `json:"timers"` + Timers []jsontime.Milliseconds `json:"timers,omitempty"` OmitEmptyTimer bool `json:"omit_empty_timer,omitempty"` } @@ -80,7 +80,7 @@ func (dtc *DisappearingTimerCapability) Supports(content *BeeperDisappearingTime if dtc == nil || content.Type == DisappearingTypeNone { return true } - return slices.Contains(dtc.Types, content.Type) && slices.Contains(dtc.Timers, content.Timer) + return slices.Contains(dtc.Types, content.Type) && (dtc.Timers == nil || slices.Contains(dtc.Timers, content.Timer)) } type CapabilityMsgType = MessageType