Avatar: Ignore some errors when loading (#4902)
This commit is contained in:
parent
877521617e
commit
e5daa2dc20
@ -337,6 +337,14 @@ export async function downloadMedia(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (err.message === 'FILE_ID_INVALID' && args.url.includes('avatar')) {
|
||||||
|
if (DEBUG) {
|
||||||
|
// eslint-disable-next-line no-console
|
||||||
|
console.warn('Inaccessible avatar image', args.url);
|
||||||
|
}
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
|
|
||||||
if (DEBUG) {
|
if (DEBUG) {
|
||||||
// eslint-disable-next-line no-console
|
// eslint-disable-next-line no-console
|
||||||
console.error('Failed to download media', args.url, err);
|
console.error('Failed to download media', args.url, err);
|
||||||
|
|||||||
@ -702,45 +702,18 @@ class TelegramClient {
|
|||||||
}
|
}
|
||||||
|
|
||||||
downloadProfilePhoto(entity, isBig = false) {
|
downloadProfilePhoto(entity, isBig = false) {
|
||||||
// ('User', 'Chat', 'UserFull', 'ChatFull')
|
const photo = entity.photo;
|
||||||
const ENTITIES = [0x2da17977, 0xc5af5d94, 0x1f4661b9, 0xd49a2697];
|
|
||||||
// ('InputPeer', 'InputUser', 'InputChannel')
|
|
||||||
// const INPUTS = [0xc91c90b6, 0xe669bf46, 0x40f202fd]
|
|
||||||
// Todo account for input methods
|
|
||||||
const sizeType = isBig ? 'x' : 'm';
|
|
||||||
let photo;
|
|
||||||
if (!(ENTITIES.includes(entity.SUBCLASS_OF_ID))) {
|
|
||||||
photo = entity;
|
|
||||||
} else {
|
|
||||||
if (!entity.photo) {
|
|
||||||
// Special case: may be a ChatFull with photo:Photo
|
|
||||||
if (!entity.chatPhoto) {
|
|
||||||
return undefined;
|
|
||||||
}
|
|
||||||
|
|
||||||
return this._downloadPhoto(
|
if (!(photo instanceof constructors.UserProfilePhoto
|
||||||
entity.chatPhoto, { sizeType },
|
|| photo instanceof constructors.ChatPhoto)) return undefined;
|
||||||
);
|
|
||||||
}
|
const dcId = photo.dcId;
|
||||||
photo = entity.photo;
|
const loc = new constructors.InputPeerPhotoFileLocation({
|
||||||
}
|
peer: utils.getInputPeer(entity),
|
||||||
|
photoId: photo.photoId,
|
||||||
|
big: isBig,
|
||||||
|
});
|
||||||
|
|
||||||
let dcId;
|
|
||||||
let loc;
|
|
||||||
if (photo instanceof constructors.UserProfilePhoto || photo instanceof constructors.ChatPhoto) {
|
|
||||||
dcId = photo.dcId;
|
|
||||||
loc = new constructors.InputPeerPhotoFileLocation({
|
|
||||||
peer: utils.getInputPeer(entity),
|
|
||||||
photoId: photo.photoId,
|
|
||||||
big: isBig,
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
// It doesn't make any sense to check if `photo` can be used
|
|
||||||
// as input location, because then this method would be able
|
|
||||||
// to "download the profile photo of a message", i.e. its
|
|
||||||
// media which should be done with `download_media` instead.
|
|
||||||
return undefined;
|
|
||||||
}
|
|
||||||
return this.downloadFile(loc, {
|
return this.downloadFile(loc, {
|
||||||
dcId,
|
dcId,
|
||||||
});
|
});
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user