Message List: Fix focusing with no animations

This commit is contained in:
Alexander Zinchuk 2021-07-14 18:08:28 +03:00
parent dc5b003aae
commit eb03d502a2
4 changed files with 19 additions and 11 deletions

View File

@ -1,7 +1,14 @@
import { ApiMediaFormat, ApiMessage } from '../../../../api/types';
import * as mediaLoader from '../../../../util/mediaLoader';
import { getMessageMediaHash, getMessagePhoto, getMessageText } from '../../../../modules/helpers';
import {
getMessageMediaHash,
getMessagePhoto,
getMessageText,
getMessageWebPagePhoto,
getMessageWebPageVideo,
hasMessageLocalBlobUrl,
} from '../../../../modules/helpers';
import { CLIPBOARD_ITEM_SUPPORTED, copyImageToClipboard, copyTextToClipboard } from '../../../../util/clipboard';
type ICopyOptions = {
@ -14,16 +21,18 @@ export function getMessageCopyOptions(
): ICopyOptions {
const options: ICopyOptions = [];
const text = getMessageText(message);
const photo = getMessagePhoto(message);
const mediaHash = getMessageMediaHash(message, 'inline')!;
const canImageBeCopied = photo && mediaHash && CLIPBOARD_ITEM_SUPPORTED;
const photo = getMessagePhoto(message)
|| (!getMessageWebPageVideo(message) ? getMessageWebPagePhoto(message) : undefined);
const mediaHash = getMessageMediaHash(message, 'inline');
const canImageBeCopied = photo && (mediaHash || hasMessageLocalBlobUrl(message)) && CLIPBOARD_ITEM_SUPPORTED;
const selection = window.getSelection();
if (canImageBeCopied) {
options.push({
label: 'lng_context_copy_image',
handler: () => {
mediaLoader.fetch(mediaHash, ApiMediaFormat.BlobUrl).then(copyImageToClipboard);
Promise.resolve(mediaHash ? mediaLoader.fetch(mediaHash, ApiMediaFormat.BlobUrl) : photo!.blobUrl)
.then(copyImageToClipboard);
if (afterEffect) {
afterEffect();

View File

@ -171,11 +171,7 @@ export function getMessageMediaHash(
case 'pictogram':
return `${base}?size=m`;
case 'inline':
if (hasMessageLocalBlobUrl(message)) {
return undefined;
}
return `${base}?size=x`;
return !hasMessageLocalBlobUrl(message) ? `${base}?size=x` : undefined;
case 'viewerPreview':
return `${base}?size=x`;
case 'viewerFull':

View File

@ -27,7 +27,8 @@ export const copyTextToClipboard = (str: string): void => {
document.body.removeChild(textCopyEl);
};
export const copyImageToClipboard = (imageUrl: string) => {
export const copyImageToClipboard = (imageUrl?: string) => {
if (!imageUrl) return;
const canvas = document.createElement('canvas');
const ctx = canvas.getContext('2d');
const imageEl = new Image();

View File

@ -113,6 +113,8 @@ function scrollWithJs(
if (forceDuration === 0) {
container.scrollTop = target;
isAnimating = false;
return;
}