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 { ApiMediaFormat, ApiMessage } from '../../../../api/types';
|
||||||
|
|
||||||
import * as mediaLoader from '../../../../util/mediaLoader';
|
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';
|
import { CLIPBOARD_ITEM_SUPPORTED, copyImageToClipboard, copyTextToClipboard } from '../../../../util/clipboard';
|
||||||
|
|
||||||
type ICopyOptions = {
|
type ICopyOptions = {
|
||||||
@ -14,16 +21,18 @@ export function getMessageCopyOptions(
|
|||||||
): ICopyOptions {
|
): ICopyOptions {
|
||||||
const options: ICopyOptions = [];
|
const options: ICopyOptions = [];
|
||||||
const text = getMessageText(message);
|
const text = getMessageText(message);
|
||||||
const photo = getMessagePhoto(message);
|
const photo = getMessagePhoto(message)
|
||||||
const mediaHash = getMessageMediaHash(message, 'inline')!;
|
|| (!getMessageWebPageVideo(message) ? getMessageWebPagePhoto(message) : undefined);
|
||||||
const canImageBeCopied = photo && mediaHash && CLIPBOARD_ITEM_SUPPORTED;
|
const mediaHash = getMessageMediaHash(message, 'inline');
|
||||||
|
const canImageBeCopied = photo && (mediaHash || hasMessageLocalBlobUrl(message)) && CLIPBOARD_ITEM_SUPPORTED;
|
||||||
const selection = window.getSelection();
|
const selection = window.getSelection();
|
||||||
|
|
||||||
if (canImageBeCopied) {
|
if (canImageBeCopied) {
|
||||||
options.push({
|
options.push({
|
||||||
label: 'lng_context_copy_image',
|
label: 'lng_context_copy_image',
|
||||||
handler: () => {
|
handler: () => {
|
||||||
mediaLoader.fetch(mediaHash, ApiMediaFormat.BlobUrl).then(copyImageToClipboard);
|
Promise.resolve(mediaHash ? mediaLoader.fetch(mediaHash, ApiMediaFormat.BlobUrl) : photo!.blobUrl)
|
||||||
|
.then(copyImageToClipboard);
|
||||||
|
|
||||||
if (afterEffect) {
|
if (afterEffect) {
|
||||||
afterEffect();
|
afterEffect();
|
||||||
|
|||||||
@ -171,11 +171,7 @@ export function getMessageMediaHash(
|
|||||||
case 'pictogram':
|
case 'pictogram':
|
||||||
return `${base}?size=m`;
|
return `${base}?size=m`;
|
||||||
case 'inline':
|
case 'inline':
|
||||||
if (hasMessageLocalBlobUrl(message)) {
|
return !hasMessageLocalBlobUrl(message) ? `${base}?size=x` : undefined;
|
||||||
return undefined;
|
|
||||||
}
|
|
||||||
|
|
||||||
return `${base}?size=x`;
|
|
||||||
case 'viewerPreview':
|
case 'viewerPreview':
|
||||||
return `${base}?size=x`;
|
return `${base}?size=x`;
|
||||||
case 'viewerFull':
|
case 'viewerFull':
|
||||||
|
|||||||
@ -27,7 +27,8 @@ export const copyTextToClipboard = (str: string): void => {
|
|||||||
document.body.removeChild(textCopyEl);
|
document.body.removeChild(textCopyEl);
|
||||||
};
|
};
|
||||||
|
|
||||||
export const copyImageToClipboard = (imageUrl: string) => {
|
export const copyImageToClipboard = (imageUrl?: string) => {
|
||||||
|
if (!imageUrl) return;
|
||||||
const canvas = document.createElement('canvas');
|
const canvas = document.createElement('canvas');
|
||||||
const ctx = canvas.getContext('2d');
|
const ctx = canvas.getContext('2d');
|
||||||
const imageEl = new Image();
|
const imageEl = new Image();
|
||||||
|
|||||||
@ -113,6 +113,8 @@ function scrollWithJs(
|
|||||||
|
|
||||||
if (forceDuration === 0) {
|
if (forceDuration === 0) {
|
||||||
container.scrollTop = target;
|
container.scrollTop = target;
|
||||||
|
isAnimating = false;
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user