client: support TG -> Matrix disappearing messages

Signed-off-by: Sumner Evans <sumner.evans@automattic.com>
This commit is contained in:
Sumner Evans
2024-10-08 14:02:52 -06:00
parent 132585de34
commit b0e6dcb1d6
3 changed files with 29 additions and 1 deletions
+1
View File
@@ -154,6 +154,7 @@ type GhostMetadata struct {
type PortalMetadata struct {
IsSuperGroup bool `json:"is_supergroup,omitempty"`
ReadUpTo int `json:"read_up_to,omitempty"`
MessagesTTL int `json:"messages_ttl,omitempty"`
}
type MessageMetadata struct {
+12 -1
View File
@@ -262,7 +262,18 @@ func (t *TelegramClient) onUpdateNewMessage(ctx context.Context, channels map[in
// case *tg.MessageActionGeoProximityReached:
// case *tg.MessageActionGroupCall:
// case *tg.MessageActionInviteToGroupCall:
// case *tg.MessageActionSetMessagesTTL:
case *tg.MessageActionSetMessagesTTL:
eventMeta.Type = bridgev2.RemoteEventChatResync
t.main.Bridge.QueueRemoteEvent(t.userLogin, &simplevent.ChatResync{
EventMeta: eventMeta,
ChatInfo: &bridgev2.ChatInfo{
ExtraUpdates: func(ctx context.Context, p *bridgev2.Portal) bool {
updated := p.Portal.Metadata.(*PortalMetadata).MessagesTTL != action.Period
p.Portal.Metadata.(*PortalMetadata).MessagesTTL = action.Period
return updated
},
},
})
// case *tg.MessageActionGroupCallScheduled:
// case *tg.MessageActionSetChatTheme:
// case *tg.MessageActionChatJoinedByRequest:
+16
View File
@@ -166,6 +166,22 @@ func (c *TelegramClient) convertToMatrix(ctx context.Context, portal *bridgev2.P
}
}
if disappearingSetting == nil {
// The TTL is either included in the message, or it's on the portal's
// metadata.
if ttl, ok := msg.GetTTLPeriod(); ok {
cm.Disappear = database.DisappearingSetting{
Type: database.DisappearingTypeAfterSend,
Timer: time.Duration(ttl) * time.Second,
}
} else if portal.Metadata.(*PortalMetadata).MessagesTTL > 0 {
cm.Disappear = database.DisappearingSetting{
Type: database.DisappearingTypeAfterSend,
Timer: time.Duration(ttl) * time.Second,
}
}
}
return
}