chat metadata: bridge title/avatar edits TG -> Matrix

Signed-off-by: Sumner Evans <sumner.evans@automattic.com>
This commit is contained in:
Sumner Evans
2024-08-06 12:35:38 -06:00
parent 7e53698696
commit ca4d566490
4 changed files with 49 additions and 16 deletions
+2 -2
View File
@@ -44,8 +44,8 @@
* [ ] Supergroup/channel permissions (precise per-user permissions not supported in Matrix)
* [ ] Membership actions (invite/kick/join/leave)
* [ ] Chat metadata changes
* [ ] Title
* [ ] Avatar
* [x] Title
* [x] Avatar
* [ ] † About text
* [ ] † Public channel username
* [x] Initial chat metadata (about text missing)
+1 -1
View File
@@ -11,7 +11,7 @@ require (
go.uber.org/zap v1.27.0
golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56
golang.org/x/net v0.27.0
maunium.net/go/mautrix v0.19.1-0.20240806155836-f6b0feab9566
maunium.net/go/mautrix v0.19.1-0.20240806185340-213f9df4a467
)
require (
+2 -2
View File
@@ -112,8 +112,8 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
maunium.net/go/mauflag v1.0.0 h1:YiaRc0tEI3toYtJMRIfjP+jklH45uDHtT80nUamyD4M=
maunium.net/go/mauflag v1.0.0/go.mod h1:nLivPOpTpHnpzEh8jEdSL9UqO9+/KBJFmNRlwKfkPeA=
maunium.net/go/mautrix v0.19.1-0.20240806155836-f6b0feab9566 h1:3cp7ffpnUyViQDaXoPvw0Pq+0ax4toN4J4OLPLJs59Q=
maunium.net/go/mautrix v0.19.1-0.20240806155836-f6b0feab9566/go.mod h1:ZWyxoQxRTBxzWIMs0kQCVogZIY0clTu33h102veCT/Q=
maunium.net/go/mautrix v0.19.1-0.20240806185340-213f9df4a467 h1:QptF4mA070qVG2isInl2HjtPOZ1TTqf0zM38uHPeWM8=
maunium.net/go/mautrix v0.19.1-0.20240806185340-213f9df4a467/go.mod h1:ZWyxoQxRTBxzWIMs0kQCVogZIY0clTu33h102veCT/Q=
nhooyr.io/websocket v1.8.11 h1:f/qXNc2/3DpoSZkHt1DQu6rj4zGC8JmkkLkWss0MgN0=
nhooyr.io/websocket v1.8.11/go.mod h1:rN9OFWIUwuxg4fR5tELlYC04bXYowCP9GX47ivo2l+c=
rsc.io/qr v0.2.0 h1:6vBLea5/NRMVTz8V66gipeLycZMl/+UlFmk8DvqQ6WY=
+44 -11
View File
@@ -62,15 +62,48 @@ func (t *TelegramClient) onUpdateNewMessage(ctx context.Context, update IGetMess
ConvertMessageFunc: t.convertToMatrix,
})
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:
sender := t.getEventSender(msg)
portalKey := ids.MakePortalKey(msg.PeerID)
switch action := msg.Action.(type) {
case *tg.MessageActionChatEditTitle:
t.main.Bridge.QueueRemoteEvent(t.userLogin, &simplevent.ChatInfoChange{
EventMeta: simplevent.EventMeta{
Type: bridgev2.RemoteEventChatInfoChange,
PortalKey: portalKey,
Sender: sender,
Timestamp: time.Unix(int64(msg.Date), 0),
},
ChatInfoChange: &bridgev2.ChatInfoChange{
ChatInfo: &bridgev2.ChatInfo{Name: &action.Title},
},
})
case *tg.MessageActionChatEditPhoto:
t.main.Bridge.QueueRemoteEvent(t.userLogin, &simplevent.ChatInfoChange{
EventMeta: simplevent.EventMeta{
Type: bridgev2.RemoteEventChatInfoChange,
PortalKey: portalKey,
Sender: sender,
Timestamp: time.Unix(int64(msg.Date), 0),
},
ChatInfoChange: &bridgev2.ChatInfoChange{
ChatInfo: &bridgev2.ChatInfo{
Avatar: t.avatarFromPhoto(action.Photo),
},
},
})
case *tg.MessageActionChatDeletePhoto:
t.main.Bridge.QueueRemoteEvent(t.userLogin, &simplevent.ChatInfoChange{
EventMeta: simplevent.EventMeta{
Type: bridgev2.RemoteEventChatInfoChange,
PortalKey: portalKey,
Sender: sender,
Timestamp: time.Unix(int64(msg.Date), 0),
},
ChatInfoChange: &bridgev2.ChatInfoChange{
ChatInfo: &bridgev2.ChatInfo{Avatar: &bridgev2.Avatar{Remove: true}},
},
})
// case *tg.MessageActionChatCreate:
// case *tg.MessageActionChatEditPhoto:
// case *tg.MessageActionChatDeletePhoto:
// case *tg.MessageActionChatAddUser:
// case *tg.MessageActionChatDeleteUser:
// case *tg.MessageActionChatJoinedByLink:
@@ -109,9 +142,9 @@ func (t *TelegramClient) onUpdateNewMessage(ctx context.Context, update IGetMess
// case *tg.MessageActionGiveawayResults:
// case *tg.MessageActionBoostApply:
// case *tg.MessageActionRequestedPeerSentMe:
// default:
// return fmt.Errorf("unknown action type %T", action)
// }
default:
return fmt.Errorf("unknown action type %T", action)
}
default:
return fmt.Errorf("unknown message type %T", msg)