diff --git a/src/components/chat/bubbles.ts b/src/components/chat/bubbles.ts index 4fe04bbd8..6e4e5ed29 100644 --- a/src/components/chat/bubbles.ts +++ b/src/components/chat/bubbles.ts @@ -532,7 +532,7 @@ export default class ChatBubbles { div.replaceWith(newDiv); if(timeSpan) { - newDiv.querySelector('.document').append(timeSpan); + (newDiv.querySelector('.document') || newDiv).append(timeSpan); } }); } @@ -3578,22 +3578,28 @@ export default class ChatBubbles { } let messageMedia: MessageMedia = isMessage && message.media; - + let needToSetHTML = true; let messageMessage: string, totalEntities: MessageEntity[]; if(isMessage) { - if((messageMedia as MessageMedia.messageMediaDocument)?.document && - !['video', 'gif'].includes(((messageMedia as MessageMedia.messageMediaDocument).document as MyDocument).type)) { - // * just filter these cases for documents caption - } else if(groupedId && albumMustBeRenderedFull) { + if(groupedId && albumMustBeRenderedFull) { const t = getAlbumText(albumMessages); messageMessage = t.message; // totalEntities = t.entities; totalEntities = t.totalEntities; - } else if(((messageMedia as MessageMedia.messageMediaDocument)?.document as MyDocument)?.type !== 'sticker') { + } else { messageMessage = message.message; // totalEntities = message.entities; totalEntities = message.totalEntities; } + + const document = (messageMedia as MessageMedia.messageMediaDocument)?.document as MyDocument; + if(document) { + if(document?.type === 'sticker') { + messageMessage = totalEntities = undefined; + } else if(!['video', 'gif'].includes(document.type)) { + needToSetHTML = false; + } + } } else { if(message.action._ === 'messageActionPhoneCall') { messageMedia = { @@ -3636,7 +3642,6 @@ export default class ChatBubbles { let canHaveTail = true; let isStandaloneMedia = false; - let needToSetHTML = true; if(bigEmojis) { if(rootScope.settings.emoji.big) { const sticker = bigEmojis === 1 && @@ -4231,7 +4236,8 @@ export default class ChatBubbles { isScheduled: (message as Message.message).pFlags.is_scheduled } : undefined, sizeType: 'documentName', - fontSize: rootScope.settings.messagesTextSize + fontSize: rootScope.settings.messagesTextSize, + richTextFragment: richText }); if(newNameContainer) { diff --git a/src/components/wrappers/document.ts b/src/components/wrappers/document.ts index 9d1c3d8b8..17d116e53 100644 --- a/src/components/wrappers/document.ts +++ b/src/components/wrappers/document.ts @@ -9,6 +9,7 @@ import {CancellablePromise} from '../../helpers/cancellablePromise'; import {clearBadCharsAndTrim} from '../../helpers/cleanSearchText'; import {formatFullSentTime} from '../../helpers/date'; import {simulateClickEvent, attachClickEvent} from '../../helpers/dom/clickEvent'; +import findUpClassName from '../../helpers/dom/findUpClassName'; import formatBytes from '../../helpers/formatBytes'; import {MediaSizeType} from '../../helpers/mediaSizes'; import noop from '../../helpers/noop'; @@ -334,6 +335,10 @@ export default async function wrapDocument({message, withTime, fontWeight, voice } attachClickEvent(docDiv, (e) => { + if(findUpClassName(e.target, 'time')) { // prevent downloading by clicking on time + return; + } + if(preloader) { preloader.onClick(e); } else { diff --git a/src/components/wrappers/groupedDocuments.ts b/src/components/wrappers/groupedDocuments.ts index 7239a7482..ca08b93f9 100644 --- a/src/components/wrappers/groupedDocuments.ts +++ b/src/components/wrappers/groupedDocuments.ts @@ -8,13 +8,12 @@ import setInnerHTML from '../../helpers/dom/setInnerHTML'; import {MediaSizeType} from '../../helpers/mediaSizes'; import {Message} from '../../layer'; import {AppManagers} from '../../lib/appManagers/managers'; -import wrapRichText from '../../lib/richTextProcessor/wrapRichText'; import {MediaSearchContext} from '../appMediaPlaybackController'; import Chat from '../chat/chat'; import LazyLoadQueue from '../lazyLoadQueue'; import wrapDocument from './document'; -export default async function wrapGroupedDocuments({albumMustBeRenderedFull, message, bubble, messageDiv, chat, loadPromises, autoDownloadSize, lazyLoadQueue, searchContext, useSearch, sizeType, managers, fontWeight, fontSize}: { +export default async function wrapGroupedDocuments({albumMustBeRenderedFull, message, bubble, messageDiv, chat, loadPromises, autoDownloadSize, lazyLoadQueue, searchContext, useSearch, sizeType, managers, fontWeight, fontSize, richTextFragment}: { albumMustBeRenderedFull: boolean, message: any, messageDiv: HTMLElement, @@ -29,7 +28,8 @@ export default async function wrapGroupedDocuments({albumMustBeRenderedFull, mes sizeType?: MediaSizeType, managers?: AppManagers, fontWeight?: number, - fontSize?: number + fontSize?: number, + richTextFragment?: DocumentFragment }) { let nameContainer: HTMLElement; const mids = albumMustBeRenderedFull ? await chat.getMidsByMid(message.mid) : [message.mid]; @@ -63,11 +63,7 @@ export default async function wrapGroupedDocuments({albumMustBeRenderedFull, mes const messageDiv = document.createElement('div'); messageDiv.classList.add('document-message'); - const richText = wrapRichText(message.message, { - entities: message.totalEntities - }); - - setInnerHTML(messageDiv, richText); + setInnerHTML(messageDiv, richTextFragment); wrapper.append(messageDiv); } diff --git a/src/scss/partials/_chatBubble.scss b/src/scss/partials/_chatBubble.scss index 20d5d7514..424008186 100644 --- a/src/scss/partials/_chatBubble.scss +++ b/src/scss/partials/_chatBubble.scss @@ -1557,7 +1557,7 @@ $bubble-beside-button-width: 38px; position: absolute; top: 0; bottom: 0; - z-index: -1; + z-index: -2; width: 200vw; left: -75vw; } @@ -1572,8 +1572,9 @@ $bubble-beside-button-width: 38px; right: 0; bottom: 0; left: 0; - background-color: rgba(0, 0, 0, .06); + background-color: var(--message-background-color); border-radius: inherit; + z-index: -1; } } } @@ -1584,8 +1585,8 @@ $bubble-beside-button-width: 38px; } body:not(.animation-level-0) & { - .document-selection, - .document-wrapper:before { + .document-selection/* , + .document-wrapper:before */ { animation: bubbleSelected 2s linear; } } @@ -1597,14 +1598,14 @@ $bubble-beside-button-width: 38px; } body:not(.animation-level-0) & { - .document-selection, - .document-wrapper:before { + .document-selection/* , + .document-wrapper:before */ { animation: fade-in-opacity .2s linear forwards; } &.backwards { - .document-selection, - .document-wrapper:before { + .document-selection/* , + .document-wrapper:before */ { animation: fade-in-backwards-opacity .2s linear forwards; } } @@ -1690,9 +1691,19 @@ $bubble-beside-button-width: 38px; } .document-wrapper { - background-color: var(--message-background-color); padding: .25rem .5rem; + // &:before { + // position: absolute; + // top: 0; + // right: 0; + // bottom: 0; + // left: 0; + // border-radius: inherit; + // background-color: var(--message-background-color); + // content: " "; + // } + > .name { // padding: .0625rem 0 .375rem; padding: 0 0 .25rem 0; @@ -2227,10 +2238,14 @@ $bubble-beside-button-width: 38px; .bubbles-date-group:last-of-type { .bubbles-group:last-of-type { .bubble:last-of-type { - margin-bottom: $bubble-overflow-big; + margin-bottom: $bubble-overflow; /* &:after, .document-container:last-of-type .document-selection { bottom: 0 !important; } */ + + &:after { + bottom: -#{$bubble-overflow}; + } } } } @@ -2838,10 +2853,6 @@ $bubble-beside-button-width: 38px; left: -50vw; } */ } - - .document-wrapper { - background-color: var(--message-background-color); - } } .bubble-hover-reaction { diff --git a/src/scss/partials/_document.scss b/src/scss/partials/_document.scss index 870f47501..923f30a5a 100644 --- a/src/scss/partials/_document.scss +++ b/src/scss/partials/_document.scss @@ -137,6 +137,7 @@ .document-download { background-color: rgba(0, 0, 0, .2); + border-radius: $border-radius; } .preloader-circular {