import appImManager, { CHAT_ANIMATION_GROUP } from "../../lib/appManagers/appImManager"; import appPhotosManager from "../../lib/appManagers/appPhotosManager"; import { RichTextProcessor } from "../../lib/richtextprocessor"; import DivAndCaption from "../divAndCaption"; import { renderImageFromUrl } from "../misc"; import { wrapSticker } from "../wrappers"; export default class ReplyContainer extends DivAndCaption<(title: string, subtitle: string, message?: any) => void> { private mediaEl: HTMLElement; constructor(protected className: string) { super(className, (title: string, subtitle: string = '', message?: any) => { if(title.length > 150) { title = title.substr(0, 140) + '...'; } if(subtitle.length > 150) { subtitle = subtitle.substr(0, 140) + '...'; } title = title ? RichTextProcessor.wrapEmojiText(title) : ''; if(this.mediaEl) { this.mediaEl.remove(); this.container.classList.remove('is-media'); } const media = message && message.media; if(media) { subtitle = message.rReply; //console.log('wrap reply', media); if(media.photo || (media.document && ['video', 'sticker'].indexOf(media.document.type) !== -1)) { const replyMedia = document.createElement('div'); replyMedia.classList.add(this.className + '-media'); if(media.document?.type == 'sticker') { wrapSticker({ doc: media.document, div: replyMedia, lazyLoadQueue: appImManager.lazyLoadQueue, group: CHAT_ANIMATION_GROUP, onlyThumb: media.document.sticker == 2, width: 32, height: 32 }); } else { const photo = media.photo || media.document; if(photo._ == 'document' || !photo.downloaded) { const sizes = photo.sizes || photo.thumbs; if(sizes && sizes[0].bytes) { appPhotosManager.setAttachmentPreview(sizes[0].bytes, replyMedia, false, true); } } const size = appPhotosManager.choosePhotoSize(photo, 32, 32/* mediaSizes.active.regular.width, mediaSizes.active.regular.height */); appPhotosManager.preloadPhoto(photo, size) .then(() => { renderImageFromUrl(replyMedia, photo._ == 'photo' ? photo.url : appPhotosManager.getDocumentCachedThumb(photo.id).url); }); } this.content.prepend(this.mediaEl = replyMedia); this.container.classList.add('is-media'); } } else { subtitle = subtitle ? RichTextProcessor.wrapEmojiText(subtitle) : ''; } this.title.innerHTML = title; this.subtitle.innerHTML = subtitle; }); } }