typing: support TG <-> Matrix

Signed-off-by: Sumner Evans <sumner.evans@automattic.com>
This commit is contained in:
Sumner Evans
2024-08-06 15:02:39 -06:00
parent 7fd280ea10
commit e0194f7621
7 changed files with 87 additions and 19 deletions
+17 -5
View File
@@ -68,16 +68,28 @@ func (pt PeerType) AsByte() byte {
}
}
func (pt PeerType) AsPortalKey(chatID int64) networkid.PortalKey {
return networkid.PortalKey{ID: networkid.PortalID(fmt.Sprintf("%s:%d", pt, chatID))}
func (pt PeerType) AsPortalKey(chatID int64, receiver networkid.UserLoginID) networkid.PortalKey {
portalKey := networkid.PortalKey{
ID: networkid.PortalID(fmt.Sprintf("%s:%d", pt, chatID)),
}
if pt == PeerTypeUser || pt == PeerTypeChat {
portalKey.Receiver = receiver
}
return portalKey
}
func MakePortalKey(peer tg.PeerClass) networkid.PortalKey {
func MakePortalKey(peer tg.PeerClass, receiver networkid.UserLoginID) networkid.PortalKey {
switch v := peer.(type) {
case *tg.PeerUser:
return networkid.PortalKey{ID: networkid.PortalID(fmt.Sprintf("%s:%d", PeerTypeUser, v.UserID))}
return networkid.PortalKey{
ID: networkid.PortalID(fmt.Sprintf("%s:%d", PeerTypeUser, v.UserID)),
Receiver: receiver,
}
case *tg.PeerChat:
return networkid.PortalKey{ID: networkid.PortalID(fmt.Sprintf("%s:%d", PeerTypeChat, v.ChatID))}
return networkid.PortalKey{
ID: networkid.PortalID(fmt.Sprintf("%s:%d", PeerTypeChat, v.ChatID)),
Receiver: receiver,
}
case *tg.PeerChannel:
return networkid.PortalKey{ID: networkid.PortalID(fmt.Sprintf("%s:%d", PeerTypeChannel, v.ChannelID))}
default: