reactions: support custom emojis

Signed-off-by: Sumner Evans <sumner.evans@automattic.com>
This commit is contained in:
Sumner Evans
2024-06-28 10:41:28 -06:00
parent 33dc5bad03
commit a63f264804
16 changed files with 244 additions and 228 deletions
+15 -4
View File
@@ -3,15 +3,26 @@ package msgconv
import (
"github.com/gotd/td/telegram"
"maunium.net/go/mautrix/bridgev2"
"go.mau.fi/mautrix-telegram/pkg/connector/media"
"go.mau.fi/mautrix-telegram/pkg/connector/store"
)
type MessageConverter struct {
client *telegram.Client
connector bridgev2.MatrixConnector
client *telegram.Client
connector bridgev2.MatrixConnector
store *store.Container
animatedStickerConfig media.AnimatedStickerConfig
useDirectMedia bool
}
func NewMessageConverter(client *telegram.Client, connector bridgev2.MatrixConnector, useDirectMedia bool) *MessageConverter {
return &MessageConverter{client: client, connector: connector, useDirectMedia: useDirectMedia}
func NewMessageConverter(client *telegram.Client, connector bridgev2.MatrixConnector, store *store.Container, animatedStickerConfig media.AnimatedStickerConfig, useDirectMedia bool) *MessageConverter {
return &MessageConverter{
client: client,
connector: connector,
store: store,
animatedStickerConfig: animatedStickerConfig,
useDirectMedia: useDirectMedia,
}
}
+15 -14
View File
@@ -208,12 +208,14 @@ func (mc *MessageConverter) convertMediaRequiringUpload(ctx context.Context, por
}
if info.ThumbnailInfo.ThumbnailURL == "" {
info.ThumbnailInfo.ThumbnailURL, info.ThumbnailInfo.ThumbnailFile, err = media.TransferToMatrix(ctx, portal.MXID, mc.client.API(), intent, &tg.InputDocumentFileLocation{
ID: document.GetID(),
AccessHash: document.GetAccessHash(),
FileReference: document.GetFileReference(),
ThumbSize: largestThumbnail.GetType(),
})
info.ThumbnailInfo.ThumbnailURL, info.ThumbnailInfo.ThumbnailFile, info.ThumbnailInfo.Size, info.ThumbnailInfo.MimeType, err = media.NewTransferer(mc.animatedStickerConfig).
WithRoomID(portal.MXID).
Transfer(ctx, mc.store, mc.client.API(), intent, &tg.InputDocumentFileLocation{
ID: document.GetID(),
AccessHash: document.GetAccessHash(),
FileReference: document.GetFileReference(),
ThumbSize: largestThumbnail.GetType(),
})
if err != nil {
return nil, nil, err
}
@@ -256,24 +258,23 @@ func (mc *MessageConverter) convertMediaRequiringUpload(ctx context.Context, por
if mxcURI == "" {
var data []byte
var mimeType string
var err error
switch msgMedia := msgMedia.(type) {
case *tg.MessageMediaPhoto:
// TODO convert to Transfer
data, _, _, info.MimeType, err = media.DownloadPhotoMedia(ctx, mc.client.API(), msgMedia)
if _, ok := msgMedia.GetTTLSeconds(); ok {
filename = "disappearing_image" + exmime.ExtensionFromMimetype(mimeType)
filename = "disappearing_image" + exmime.ExtensionFromMimetype(info.MimeType)
} else {
filename = "image" + exmime.ExtensionFromMimetype(mimeType)
filename = "image" + exmime.ExtensionFromMimetype(info.MimeType)
}
data, _, _, mimeType, err = media.DownloadPhotoMedia(ctx, mc.client.API(), msgMedia)
case *tg.MessageMediaDocument:
document, ok := msgMedia.Document.(*tg.Document)
if !ok {
return nil, nil, fmt.Errorf("unrecognized document type %T", msgMedia.Document)
}
mimeType = document.GetMimeType()
info.MimeType = document.GetMimeType()
// TODO convert to Transfer
data, err = media.DownloadDocument(ctx, mc.client.API(), document)
default:
return nil, nil, fmt.Errorf("unhandled media type %T", msgMedia)
@@ -282,7 +283,7 @@ func (mc *MessageConverter) convertMediaRequiringUpload(ctx context.Context, por
return nil, nil, err
}
mxcURI, encryptedFileInfo, err = intent.UploadMedia(ctx, portal.MXID, data, filename, mimeType)
mxcURI, encryptedFileInfo, err = intent.UploadMedia(ctx, portal.MXID, data, filename, info.MimeType)
if err != nil {
return nil, nil, err
}