diff --git a/src/components/common/CustomEmoji.tsx b/src/components/common/CustomEmoji.tsx index 07d7e3d1c..d9a1ae00e 100644 --- a/src/components/common/CustomEmoji.tsx +++ b/src/components/common/CustomEmoji.tsx @@ -18,6 +18,7 @@ import useEnsureCustomEmoji from '../../hooks/useEnsureCustomEmoji'; import { useIsIntersecting } from '../../hooks/useIntersectionObserver'; import useThumbnail from '../../hooks/useThumbnail'; import useCustomEmoji from './hooks/useCustomEmoji'; +import safePlay from '../../util/safePlay'; import AnimatedSticker from './AnimatedSticker'; import OptimizedVideo from '../ui/OptimizedVideo'; @@ -85,12 +86,17 @@ const CustomEmoji: FC = ({ if (loopCountRef.current >= loopLimit) { setShouldLoop(false); e.currentTarget.currentTime = 0; + } else { + // Loop manually + safePlay(e.currentTarget); } }, [loopLimit]); const handleStickerLoop = useCallback(() => { if (!loopLimit) return; + loopCountRef.current += 1; + // Sticker plays 1 more time after disabling loop if (loopCountRef.current >= loopLimit - 1) { setShouldLoop(false); @@ -117,7 +123,7 @@ const CustomEmoji: FC = ({ if (customEmoji.isVideo) { return ( = ({
{isUserId(chatId) ? ( = ({ /> ) : (