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) * [ ] Supergroup/channel permissions (precise per-user permissions not supported in Matrix)
* [ ] Membership actions (invite/kick/join/leave) * [ ] Membership actions (invite/kick/join/leave)
* [ ] Chat metadata changes * [ ] Chat metadata changes
* [ ] Title * [x] Title
* [ ] Avatar * [x] Avatar
* [ ] † About text * [ ] † About text
* [ ] † Public channel username * [ ] † Public channel username
* [x] Initial chat metadata (about text missing) * [x] Initial chat metadata (about text missing)
+1 -1
View File
@@ -11,7 +11,7 @@ require (
go.uber.org/zap v1.27.0 go.uber.org/zap v1.27.0
golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56
golang.org/x/net v0.27.0 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 ( 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= 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 h1:YiaRc0tEI3toYtJMRIfjP+jklH45uDHtT80nUamyD4M=
maunium.net/go/mauflag v1.0.0/go.mod h1:nLivPOpTpHnpzEh8jEdSL9UqO9+/KBJFmNRlwKfkPeA= 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.20240806185340-213f9df4a467 h1:QptF4mA070qVG2isInl2HjtPOZ1TTqf0zM38uHPeWM8=
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/go.mod h1:ZWyxoQxRTBxzWIMs0kQCVogZIY0clTu33h102veCT/Q=
nhooyr.io/websocket v1.8.11 h1:f/qXNc2/3DpoSZkHt1DQu6rj4zGC8JmkkLkWss0MgN0= nhooyr.io/websocket v1.8.11 h1:f/qXNc2/3DpoSZkHt1DQu6rj4zGC8JmkkLkWss0MgN0=
nhooyr.io/websocket v1.8.11/go.mod h1:rN9OFWIUwuxg4fR5tELlYC04bXYowCP9GX47ivo2l+c= nhooyr.io/websocket v1.8.11/go.mod h1:rN9OFWIUwuxg4fR5tELlYC04bXYowCP9GX47ivo2l+c=
rsc.io/qr v0.2.0 h1:6vBLea5/NRMVTz8V66gipeLycZMl/+UlFmk8DvqQ6WY= 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, ConvertMessageFunc: t.convertToMatrix,
}) })
case *tg.MessageService: case *tg.MessageService:
// fmt.Printf("message service\n") sender := t.getEventSender(msg)
// fmt.Printf("%v\n", msg) portalKey := ids.MakePortalKey(msg.PeerID)
switch action := msg.Action.(type) {
// sender := t.getEventSender(msg) case *tg.MessageActionChatEditTitle:
// switch action := msg.Action.(type) { t.main.Bridge.QueueRemoteEvent(t.userLogin, &simplevent.ChatInfoChange{
// case *tg.MessageActionChatEditTitle: 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.MessageActionChatCreate:
// case *tg.MessageActionChatEditPhoto:
// case *tg.MessageActionChatDeletePhoto:
// case *tg.MessageActionChatAddUser: // case *tg.MessageActionChatAddUser:
// case *tg.MessageActionChatDeleteUser: // case *tg.MessageActionChatDeleteUser:
// case *tg.MessageActionChatJoinedByLink: // case *tg.MessageActionChatJoinedByLink:
@@ -109,9 +142,9 @@ func (t *TelegramClient) onUpdateNewMessage(ctx context.Context, update IGetMess
// case *tg.MessageActionGiveawayResults: // case *tg.MessageActionGiveawayResults:
// case *tg.MessageActionBoostApply: // case *tg.MessageActionBoostApply:
// case *tg.MessageActionRequestedPeerSentMe: // case *tg.MessageActionRequestedPeerSentMe:
// default: default:
// return fmt.Errorf("unknown action type %T", action) return fmt.Errorf("unknown action type %T", action)
// } }
default: default:
return fmt.Errorf("unknown message type %T", msg) return fmt.Errorf("unknown message type %T", msg)