Message List: Fix focusing with no animations
This commit is contained in:
parent
dc5b003aae
commit
eb03d502a2
@ -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();
|
||||
|
||||
@ -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':
|
||||
|
||||
@ -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();
|
||||
|
||||
@ -113,6 +113,8 @@ function scrollWithJs(
|
||||
|
||||
if (forceDuration === 0) {
|
||||
container.scrollTop = target;
|
||||
isAnimating = false;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user