read receipts: bridges TG <-> Matrix

Signed-off-by: Sumner Evans <sumner.evans@automattic.com>
This commit is contained in:
Sumner Evans
2024-08-07 12:38:01 -06:00
parent 838f291220
commit a86c2c2544
4 changed files with 131 additions and 20 deletions
+33 -1
View File
@@ -174,7 +174,7 @@ func (t *TelegramClient) getEventSender(msg interface {
GetPeerID() tg.PeerClass
}) bridgev2.EventSender {
if msg.GetOut() {
return bridgev2.EventSender{IsFromMe: true, SenderLogin: t.loginID, Sender: t.userID}
return t.mySender()
} else if f, ok := msg.GetFromID(); ok && f.TypeID() == tg.PeerUserTypeID {
from := f.(*tg.PeerUser)
return bridgev2.EventSender{
@@ -305,6 +305,7 @@ func (t *TelegramClient) onMessageEdit(ctx context.Context, update IGetMessage)
return nil
}
func (t *TelegramClient) handleTyping(portal networkid.PortalKey, userID int64, action tg.SendMessageActionClass) error {
if userID == t.telegramUserID {
return nil
@@ -327,6 +328,37 @@ func (t *TelegramClient) handleTyping(portal networkid.PortalKey, userID int64,
return nil
}
func (t *TelegramClient) updateReadReceipt(update *tg.UpdateReadHistoryOutbox) error {
user, ok := update.Peer.(*tg.PeerUser)
if !ok {
return fmt.Errorf("unsupported peer type %T", update.Peer)
}
t.main.Bridge.QueueRemoteEvent(t.userLogin, &simplevent.Receipt{
EventMeta: simplevent.EventMeta{
Type: bridgev2.RemoteEventReadReceipt,
PortalKey: ids.MakePortalKey(update.Peer, t.loginID),
Sender: bridgev2.EventSender{
SenderLogin: ids.MakeUserLoginID(user.UserID),
Sender: ids.MakeUserID(user.UserID),
},
},
LastTarget: ids.MakeMessageID(update.MaxID),
})
return nil
}
func (t *TelegramClient) onOwnReadReceipt(portalKey networkid.PortalKey, maxID int) error {
t.main.Bridge.QueueRemoteEvent(t.userLogin, &simplevent.Receipt{
EventMeta: simplevent.EventMeta{
Type: bridgev2.RemoteEventReadReceipt,
PortalKey: portalKey,
Sender: t.mySender(),
},
LastTarget: ids.MakeMessageID(maxID),
})
return nil
}
func (t *TelegramClient) handleTelegramReactions(ctx context.Context, msg *tg.Message) {
log := zerolog.Ctx(ctx).With().
Str("handler", "handle_telegram_reactions").