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(() => {