diff --git a/src/components/middle/composer/Composer.scss b/src/components/middle/composer/Composer.scss index 18ea9966d..eb4d9485e 100644 --- a/src/components/middle/composer/Composer.scss +++ b/src/components/middle/composer/Composer.scss @@ -155,14 +155,15 @@ &.not-ready > .icon { animation-duration: 0ms !important; } + } - body.no-message-composer-animations & { - .icon-send, - .icon-microphone-alt, - .icon-check, - .icon-schedule { - animation-duration: 0ms !important; - } + &:not(.mounted) > .Button, + body.no-message-composer-animations & > .Button { + .icon-send, + .icon-microphone-alt, + .icon-check, + .icon-schedule { + animation-duration: 0ms !important; } } diff --git a/src/components/middle/composer/Composer.tsx b/src/components/middle/composer/Composer.tsx index a71d78f35..c0a379ee9 100644 --- a/src/components/middle/composer/Composer.tsx +++ b/src/components/middle/composer/Composer.tsx @@ -113,6 +113,7 @@ import useDerivedState from '../../../hooks/useDerivedState'; import { useStateRef } from '../../../hooks/useStateRef'; import useEffectWithPrevDeps from '../../../hooks/useEffectWithPrevDeps'; import useDraft from './hooks/useDraft'; +import useTimeout from '../../../hooks/useTimeout'; import DeleteMessageModal from '../../common/DeleteMessageModal.async'; import Button from '../../ui/Button'; @@ -225,6 +226,7 @@ const MOBILE_KEYBOARD_HIDE_DELAY_MS = 100; const SELECT_MODE_TRANSITION_MS = 200; const MESSAGE_MAX_LENGTH = 4096; const SENDING_ANIMATION_DURATION = 350; +const MOUNT_ANIMATION_DURATION = 430; // eslint-disable-next-line max-len const APPENDIX = ''; @@ -315,6 +317,7 @@ const Composer: FC = ({ const inputRef = useRef(null); const [getHtml, setHtml] = useSignal(''); + const [getIsMounted, setIsMounted] = useSignal(false); const getSelectionRange = useGetSelectionRange(EDITABLE_INPUT_CSS_SELECTOR); const lastMessageSendTimeSeconds = useRef(); const prevDropAreaState = usePrevious(dropAreaState); @@ -335,6 +338,8 @@ const Composer: FC = ({ }, [cancelForceShowSymbolMenu]); const [requestCalendar, calendar] = useSchedule(canScheduleUntilOnline, handleScheduleCancel); + useTimeout(() => { setIsMounted(true); }, MOUNT_ANIMATION_DURATION); + useEffect(() => { lastMessageSendTimeSeconds.current = undefined; }, [chatId]); @@ -1207,6 +1212,7 @@ const Composer: FC = ({ 'Composer', !isSelectModeActive && 'shown', isHoverDisabled && 'hover-disabled', + getIsMounted() && 'mounted', ); const handleSendScheduled = useCallback(() => {