avatar: fix downloading avatars
Signed-off-by: Sumner Evans <sumner.evans@automattic.com>
This commit is contained in:
@@ -444,7 +444,11 @@ func (t *TelegramClient) getUserInfoFromTelegramUser(ctx context.Context, u tg.U
|
||||
avatar = &bridgev2.Avatar{
|
||||
ID: ids.MakeAvatarID(photo.PhotoID),
|
||||
Get: func(ctx context.Context) (data []byte, err error) {
|
||||
data, _, err = media.NewTransferer(t.client.API()).WithUserPhoto(user, photo.PhotoID).Download(ctx)
|
||||
transferer, err := media.NewTransferer(t.client.API()).WithUserPhoto(ctx, t.ScopedStore, user, photo.PhotoID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
data, _, err = transferer.Download(ctx)
|
||||
return
|
||||
},
|
||||
}
|
||||
|
||||
@@ -193,14 +193,20 @@ func (t *Transferer) WithPhoto(pc tg.PhotoClass) *ReadyTransferer {
|
||||
// WithUser transforms a [Transferer] to a [ReadyTransferer] by setting the
|
||||
// given user's photo as the location that will be downloaded by the
|
||||
// [ReadyTransferer].
|
||||
func (t *Transferer) WithUserPhoto(user *tg.User, photoID int64) *ReadyTransferer {
|
||||
return &ReadyTransferer{
|
||||
inner: t,
|
||||
loc: &tg.InputPeerPhotoFileLocation{
|
||||
Peer: &tg.InputPeerUser{UserID: user.GetID()},
|
||||
PhotoID: photoID,
|
||||
Big: true,
|
||||
},
|
||||
func (t *Transferer) WithUserPhoto(ctx context.Context, store *store.ScopedStore, user *tg.User, photoID int64) (*ReadyTransferer, error) {
|
||||
if accessHash, found, err := store.GetUserAccessHash(ctx, user.GetID()); err != nil {
|
||||
return nil, fmt.Errorf("failed to get user access hash for %d: %w", user.GetID(), err)
|
||||
} else if !found {
|
||||
return nil, fmt.Errorf("user access hash not found for %d", user.GetID())
|
||||
} else {
|
||||
return &ReadyTransferer{
|
||||
inner: t,
|
||||
loc: &tg.InputPeerPhotoFileLocation{
|
||||
Peer: &tg.InputPeerUser{UserID: user.GetID(), AccessHash: accessHash},
|
||||
PhotoID: photoID,
|
||||
Big: true,
|
||||
},
|
||||
}, nil
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user