mirror of
https://github.com/fluxerapp/fluxer
synced 2026-10-18 21:45:31 +09:00
fix(app): honour the animation setting for composer custom emoji (#1914)
This commit is contained in:
1 parent
0a9e64d36a
commit
c5d910425e
2 files changed
+17
-7
No files matched your search
@@ -6,9 +6,8 @@ import type {FlatEmoji} from '@app/features/emoji/types/EmojiTypes';
|
|||||||
import Guilds from '@app/features/guild/state/Guilds';
|
import Guilds from '@app/features/guild/state/Guilds';
|
||||||
import {ComposerMentionContext} from '@app/features/lexical/composer/ComposerMentionContext';
|
import {ComposerMentionContext} from '@app/features/lexical/composer/ComposerMentionContext';
|
||||||
import styles from '@app/features/lexical/composer/nodes/ComposerInline.module.css';
|
import styles from '@app/features/lexical/composer/nodes/ComposerInline.module.css';
|
||||||
import {setUrlQueryParams} from '@app/features/messaging/utils/MessagingUrlUtils';
|
import {getEmojiRenderUrl} from '@app/features/messaging/utils/markdown/EmojiDetector';
|
||||||
import {EmojiWithTooltip} from '@app/features/ui/emoji_tooltip_content/EmojiWithTooltip';
|
import {EmojiWithTooltip} from '@app/features/ui/emoji_tooltip_content/EmojiWithTooltip';
|
||||||
import * as AvatarSourceUtils from '@app/features/user/utils/AvatarSourceUtils';
|
|
||||||
import {msg} from '@lingui/core/macro';
|
import {msg} from '@lingui/core/macro';
|
||||||
import {useLingui} from '@lingui/react/macro';
|
import {useLingui} from '@lingui/react/macro';
|
||||||
import {observer} from 'mobx-react-lite';
|
import {observer} from 'mobx-react-lite';
|
||||||
@@ -33,7 +32,12 @@ interface ComposerCustomEmojiProps {
|
|||||||
export const ComposerCustomEmoji = observer(({emojiId, animated, display}: ComposerCustomEmojiProps) => {
|
export const ComposerCustomEmoji = observer(({emojiId, animated, display}: ComposerCustomEmojiProps) => {
|
||||||
const {plainText} = useContext(ComposerMentionContext);
|
const {plainText} = useContext(ComposerMentionContext);
|
||||||
const {i18n} = useLingui();
|
const {i18n} = useLingui();
|
||||||
const shouldAnimate = useShouldAnimate({kind: 'emoji'});
|
const record = Emoji.getEmojiById(emojiId);
|
||||||
|
const isAnimatable = record?.animated ?? animated;
|
||||||
|
const shouldAnimate = useShouldAnimate({
|
||||||
|
kind: 'emoji',
|
||||||
|
isAnimated: isAnimatable,
|
||||||
|
});
|
||||||
if (plainText) {
|
if (plainText) {
|
||||||
return (
|
return (
|
||||||
<span
|
<span
|
||||||
@@ -46,7 +50,6 @@ export const ComposerCustomEmoji = observer(({emojiId, animated, display}: Compo
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
const name = display.replace(/^:|:$/g, '');
|
const name = display.replace(/^:|:$/g, '');
|
||||||
const record = Emoji.getEmojiById(emojiId);
|
|
||||||
const emojiForSubtext: FlatEmoji =
|
const emojiForSubtext: FlatEmoji =
|
||||||
record == null
|
record == null
|
||||||
? {
|
? {
|
||||||
@@ -63,11 +66,17 @@ export const ComposerCustomEmoji = observer(({emojiId, animated, display}: Compo
|
|||||||
const accessibleLabel = communityName
|
const accessibleLabel = communityName
|
||||||
? i18n._(CUSTOM_EMOJI_FROM_COMMUNITY_DESCRIPTOR, {emojiName: display, communityName})
|
? i18n._(CUSTOM_EMOJI_FROM_COMMUNITY_DESCRIPTOR, {emojiName: display, communityName})
|
||||||
: i18n._(CUSTOM_EMOJI_DESCRIPTOR, {emojiName: display});
|
: i18n._(CUSTOM_EMOJI_DESCRIPTOR, {emojiName: display});
|
||||||
const displayUrl = AvatarSourceUtils.getEmojiURL({id: emojiId, animated: animated && shouldAnimate});
|
const displayUrl =
|
||||||
const tooltipUrl = setUrlQueryParams(displayUrl, {size: 240, quality: 'lossless'});
|
getEmojiRenderUrl({
|
||||||
|
id: emojiId,
|
||||||
|
surrogateUrl: null,
|
||||||
|
isAnimatable,
|
||||||
|
animated: shouldAnimate,
|
||||||
|
jumbo: false,
|
||||||
|
}) ?? '';
|
||||||
return (
|
return (
|
||||||
<EmojiWithTooltip
|
<EmojiWithTooltip
|
||||||
emojiUrl={tooltipUrl}
|
emojiUrl={displayUrl}
|
||||||
emojiName={display}
|
emojiName={display}
|
||||||
emojiForSubtext={emojiForSubtext}
|
emojiForSubtext={emojiForSubtext}
|
||||||
data-flx="lexical.composer.nodes.composer-custom-emoji.emoji-with-tooltip"
|
data-flx="lexical.composer.nodes.composer-custom-emoji.emoji-with-tooltip"
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
display: inline-block;
|
display: inline-block;
|
||||||
height: 1.375em;
|
height: 1.375em;
|
||||||
width: auto;
|
width: auto;
|
||||||
|
aspect-ratio: 1 / 1;
|
||||||
max-height: 1.375em;
|
max-height: 1.375em;
|
||||||
vertical-align: bottom;
|
vertical-align: bottom;
|
||||||
object-fit: contain;
|
object-fit: contain;
|
||||||
|
|||||||
Reference in new issue
Block a user