Fix rendering custom emoji in grouped documents

Fix flickering bottom message on sending
Fix disappearing time when sending pdf
This commit is contained in:
Eduard Kuzmenko 2022-11-07 21:43:23 +04:00
parent 49a067fc5c
commit e7072529c0
5 changed files with 50 additions and 31 deletions

View File

@ -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) {

View File

@ -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 {

View File

@ -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);
}

View File

@ -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 {

View File

@ -137,6 +137,7 @@
.document-download {
background-color: rgba(0, 0, 0, .2);
border-radius: $border-radius;
}
.preloader-circular {