initial metadata: set room name

Signed-off-by: Sumner Evans <sumner.evans@automattic.com>
This commit is contained in:
Sumner Evans
2024-06-24 13:33:38 -06:00
parent 1563ee014d
commit 5193cd899f
+97 -34
View File
@@ -120,33 +120,9 @@ func connectTelegramClient(ctx context.Context, client *telegram.Client) (contex
func (t *TelegramClient) onUpdateNewMessage(ctx context.Context, e tg.Entities, update *tg.UpdateNewMessage) error { func (t *TelegramClient) onUpdateNewMessage(ctx context.Context, e tg.Entities, update *tg.UpdateNewMessage) error {
log := zerolog.Ctx(ctx) log := zerolog.Ctx(ctx)
msg, ok := update.GetMessage().(*tg.Message) switch msg := update.GetMessage().(type) {
if !ok { case *tg.Message:
log.Error().Type("message", update.GetMessage()).Msg("unknown message type") sender := t.getEventSender(msg)
return nil
}
var sender bridgev2.EventSender
if msg.Out {
sender.IsFromMe = true
sender.SenderLogin = ids.MakeUserLoginID(t.loginID)
sender.Sender = ids.MakeUserID(t.loginID)
} else if msg.FromID != nil {
switch from := msg.FromID.(type) {
case *tg.PeerUser:
sender.SenderLogin = ids.MakeUserLoginID(from.UserID)
sender.Sender = ids.MakeUserID(from.UserID)
default:
fmt.Printf("%+v\n", msg.FromID)
fmt.Printf("%T\n", msg.FromID)
panic("unimplemented FromID")
}
} else if peer, ok := msg.PeerID.(*tg.PeerUser); ok {
sender.SenderLogin = ids.MakeUserLoginID(peer.UserID)
sender.Sender = ids.MakeUserID(peer.UserID)
} else {
panic("not from anyone")
}
if media, ok := msg.GetMedia(); ok && media.TypeID() == tg.MessageMediaContactTypeID { if media, ok := msg.GetMedia(); ok && media.TypeID() == tg.MessageMediaContactTypeID {
contact := media.(*tg.MessageMediaContact) contact := media.(*tg.MessageMediaContact)
@@ -171,9 +147,94 @@ func (t *TelegramClient) onUpdateNewMessage(ctx context.Context, e tg.Entities,
ConvertMessageFunc: t.msgConv.ToMatrix, ConvertMessageFunc: t.msgConv.ToMatrix,
Timestamp: time.Unix(int64(msg.Date), 0), Timestamp: time.Unix(int64(msg.Date), 0),
}) })
case *tg.MessageService:
fmt.Printf("message service\n")
fmt.Printf("%v\n", msg)
// sender := t.getEventSender(msg)
// switch action := msg.Action.(type) {
// case *tg.MessageActionChatEditTitle:
// case *tg.MessageActionChatCreate:
// case *tg.MessageActionChatEditPhoto:
// case *tg.MessageActionChatDeletePhoto:
// case *tg.MessageActionChatAddUser:
// case *tg.MessageActionChatDeleteUser:
// case *tg.MessageActionChatJoinedByLink:
// case *tg.MessageActionChannelCreate:
// case *tg.MessageActionChatMigrateTo:
// case *tg.MessageActionChannelMigrateFrom:
// case *tg.MessageActionPinMessage:
// case *tg.MessageActionHistoryClear:
// case *tg.MessageActionGameScore:
// case *tg.MessageActionPaymentSentMe:
// case *tg.MessageActionPaymentSent:
// case *tg.MessageActionPhoneCall:
// case *tg.MessageActionScreenshotTaken:
// case *tg.MessageActionCustomAction:
// case *tg.MessageActionBotAllowed:
// case *tg.MessageActionSecureValuesSentMe:
// case *tg.MessageActionSecureValuesSent:
// case *tg.MessageActionContactSignUp:
// case *tg.MessageActionGeoProximityReached:
// case *tg.MessageActionGroupCall:
// case *tg.MessageActionInviteToGroupCall:
// case *tg.MessageActionSetMessagesTTL:
// case *tg.MessageActionGroupCallScheduled:
// case *tg.MessageActionSetChatTheme:
// case *tg.MessageActionChatJoinedByRequest:
// case *tg.MessageActionWebViewDataSentMe:
// case *tg.MessageActionWebViewDataSent:
// case *tg.MessageActionGiftPremium:
// case *tg.MessageActionTopicCreate:
// case *tg.MessageActionTopicEdit:
// case *tg.MessageActionSuggestProfilePhoto:
// case *tg.MessageActionRequestedPeer:
// case *tg.MessageActionSetChatWallPaper:
// case *tg.MessageActionGiftCode:
// case *tg.MessageActionGiveawayLaunch:
// case *tg.MessageActionGiveawayResults:
// case *tg.MessageActionBoostApply:
// case *tg.MessageActionRequestedPeerSentMe:
// default:
// return fmt.Errorf("unknown action type %T", action)
// }
default:
return fmt.Errorf("unknown message type %T", msg)
}
return nil return nil
} }
type messageWithSender interface {
GetOut() bool
GetFromID() (tg.PeerClass, bool)
GetPeerID() tg.PeerClass
}
func (t *TelegramClient) getEventSender(msg messageWithSender) (sender bridgev2.EventSender) {
if msg.GetOut() {
sender.IsFromMe = true
sender.SenderLogin = ids.MakeUserLoginID(t.loginID)
sender.Sender = ids.MakeUserID(t.loginID)
} else if f, ok := msg.GetFromID(); ok {
switch from := f.(type) {
case *tg.PeerUser:
sender.SenderLogin = ids.MakeUserLoginID(from.UserID)
sender.Sender = ids.MakeUserID(from.UserID)
default:
fmt.Printf("%+v\n", f)
fmt.Printf("%T\n", f)
panic("unimplemented FromID")
}
} else if peer, ok := msg.GetPeerID().(*tg.PeerUser); ok {
sender.SenderLogin = ids.MakeUserLoginID(peer.UserID)
sender.Sender = ids.MakeUserID(peer.UserID)
} else {
panic("not from anyone")
}
return
}
func (t *TelegramClient) onUpdateNewChannelMessage(ctx context.Context, e tg.Entities, update *tg.UpdateNewChannelMessage) error { func (t *TelegramClient) onUpdateNewChannelMessage(ctx context.Context, e tg.Entities, update *tg.UpdateNewChannelMessage) error {
fmt.Printf("update new channel message %+v\n", update) fmt.Printf("update new channel message %+v\n", update)
return nil return nil
@@ -194,7 +255,7 @@ func (t *TelegramClient) GetChatInfo(ctx context.Context, portal *bridgev2.Porta
if err != nil { if err != nil {
return nil, err return nil, err
} }
var name, topic string var name string
var members []networkid.UserID var members []networkid.UserID
var isSpace, isDM bool var isSpace, isDM bool
@@ -215,15 +276,18 @@ func (t *TelegramClient) GetChatInfo(ctx context.Context, portal *bridgev2.Porta
isDM = true isDM = true
} }
case ids.PeerTypeChat: case ids.PeerTypeChat:
// TODO get name of chat fullChat, err := t.client.API().MessagesGetFullChat(ctx, id)
chat, err := t.client.API().MessagesGetFullChat(ctx, id)
if err != nil { if err != nil {
return nil, err return nil, err
} }
if len(chat.Users) == 0 { for _, c := range fullChat.Chats {
return nil, fmt.Errorf("no users found in chat %d", id) if c.GetID() == id {
name = c.(*tg.Chat).Title
break
} }
for _, user := range chat.Users { }
for _, user := range fullChat.Users {
members = append(members, ids.MakeUserID(user.GetID())) members = append(members, ids.MakeUserID(user.GetID()))
} }
default: default:
@@ -233,7 +297,6 @@ func (t *TelegramClient) GetChatInfo(ctx context.Context, portal *bridgev2.Porta
return &bridgev2.PortalInfo{ return &bridgev2.PortalInfo{
Name: &name, Name: &name,
Topic: &topic, // TODO
// TODO // TODO
// Avatar *Avatar // Avatar *Avatar