import type { FC } from '../../lib/teact/teact'; import { memo, useCallback, useState } from '../../lib/teact/teact'; import { STICKER_SIZE_AUTH, STICKER_SIZE_AUTH_MOBILE, STICKER_SIZE_TWO_FA } from '../../config'; import { LOCAL_TGS_URLS } from './helpers/animatedAssets'; import useAppLayout from '../../hooks/useAppLayout'; import AnimatedSticker from './AnimatedSticker'; import './PasswordMonkey.scss'; type OwnProps = { code: string; codeLength: number; trackingDirection: number; isTracking: boolean; isBig?: boolean; }; const TRACKING_START_FRAME = 15; const TRACKING_END_FRAME = 180; const TrackingMonkey: FC = ({ code, codeLength, trackingDirection, isTracking, isBig, }) => { const [isFirstMonkeyLoaded, setIsFirstMonkeyLoaded] = useState(false); const { isMobile } = useAppLayout(); const trackningFramesPerSymbol = (TRACKING_END_FRAME - TRACKING_START_FRAME) / codeLength; const stickerSize = isMobile ? STICKER_SIZE_AUTH_MOBILE : STICKER_SIZE_AUTH; const handleFirstMonkeyLoad = useCallback(() => setIsFirstMonkeyLoaded(true), []); function getTrackingFrames(): [number, number] { const startFrame = (code && code.length > 1) || trackingDirection < 0 ? TRACKING_START_FRAME + trackningFramesPerSymbol * (code.length - 1) : 0; const endFrame = code.length === codeLength ? TRACKING_END_FRAME : TRACKING_START_FRAME + trackningFramesPerSymbol * code.length; if (trackingDirection < 1) { return [ endFrame, startFrame, ]; } return [ startFrame, endFrame, ]; } return (
{!isFirstMonkeyLoaded && (
)}
); }; export default memo(TrackingMonkey);