This commit is contained in:
Eduard Kuzmenko 2022-09-25 21:52:45 +04:00
commit afccc3d2b7
2 changed files with 17 additions and 8 deletions

View File

@ -259,7 +259,7 @@ export default class AppMediaViewer extends AppMediaViewerBase<'caption', 'delet
const fromId = (message as Message.message).fwd_from && !message.fromId ? (message as Message.message).fwd_from.from_name : message.fromId; const fromId = (message as Message.message).fwd_from && !message.fromId ? (message as Message.message).fwd_from.from_name : message.fromId;
const media = getMediaFromMessage(message); const media = getMediaFromMessage(message);
const cantForwardMessage = message._ === 'messageService' || !this.managers.appMessagesManager.canForward(message); const cantForwardMessage = message._ === 'messageService' || ! await this.managers.appMessagesManager.canForward(message);
[this.buttons.forward, this.btnMenuForward.element].forEach((button) => { [this.buttons.forward, this.btnMenuForward.element].forEach((button) => {
button.classList.toggle('hide', cantForwardMessage); button.classList.toggle('hide', cantForwardMessage);
}); });
@ -271,7 +271,7 @@ export default class AppMediaViewer extends AppMediaViewerBase<'caption', 'delet
button.classList.toggle('hide', cantDownloadMessage); button.classList.toggle('hide', cantDownloadMessage);
}); });
const canDeleteMessage = this.managers.appMessagesManager.canDeleteMessage(message); const canDeleteMessage = await this.managers.appMessagesManager.canDeleteMessage(message);
[this.buttons.delete, this.btnMenuDelete.element].forEach((button) => { [this.buttons.delete, this.btnMenuDelete.element].forEach((button) => {
button.classList.toggle('hide', !canDeleteMessage); button.classList.toggle('hide', !canDeleteMessage);
}); });

View File

@ -432,19 +432,28 @@ export default class ChatContextMenu {
icon: 'download', icon: 'download',
text: 'MediaViewer.Context.Download', text: 'MediaViewer.Context.Download',
onClick: () => { onClick: () => {
appDownloadManager.downloadToDisc({media: (this.message as any).media.document}); appDownloadManager.downloadToDisc({media: (this.message as any).media?.document || (this.message as any).media.photo});
}, },
verify: () => { verify: () => {
if(this.message.pFlags.is_outgoing) { if(this.message.pFlags.is_outgoing || this.noForwards) {
return false; return false;
} }
const doc: MyDocument = ((this.message as Message.message).media as MessageMedia.messageMediaDocument)?.document as any; const isPhoto: boolean = !!((this.message as Message.message).media as MessageMedia.messageMediaPhoto)?.photo;
if(!doc) return false; let isGoodType = false
if(isPhoto) {
isGoodType = true;
} else {
const doc: MyDocument = ((this.message as Message.message).media as MessageMedia.messageMediaDocument)?.document as any;
if(!doc) return false;
isGoodType = doc.type && (['gif', 'video'/* , 'sticker' */] as MyDocument['type'][]).includes(doc.type)
}
let hasTarget = !!IS_TOUCH_SUPPORTED; let hasTarget = !!IS_TOUCH_SUPPORTED;
const isGoodType = !doc.type || !(['gif', 'video'/* , 'sticker' */] as MyDocument['type'][]).includes(doc.type);
if(isGoodType) hasTarget ||= !!findUpClassName(this.target, 'document') || !!findUpClassName(this.target, 'audio') || !!findUpClassName(this.target, 'media-sticker-wrapper'); if(isGoodType) hasTarget ||= !!findUpClassName(this.target, 'document') || !!findUpClassName(this.target, 'audio') || !!findUpClassName(this.target, 'media-sticker-wrapper') || !!findUpClassName(this.target, 'media-photo') || !!findUpClassName(this.target, 'media-video');
return isGoodType && hasTarget; return isGoodType && hasTarget;
} }
}, { }, {