Composer: fix blinks for close animation (#4169)
This commit is contained in:
parent
ca130d49dd
commit
44a0c0a4fc
@ -20,6 +20,7 @@ import {
|
|||||||
isMessageTranslatable,
|
isMessageTranslatable,
|
||||||
} from '../../../global/helpers';
|
} from '../../../global/helpers';
|
||||||
import buildClassName from '../../../util/buildClassName';
|
import buildClassName from '../../../util/buildClassName';
|
||||||
|
import freezeWhenClosed from '../../../util/hoc/freezeWhenClosed';
|
||||||
import { getPictogramDimensions } from '../helpers/mediaDimensions';
|
import { getPictogramDimensions } from '../helpers/mediaDimensions';
|
||||||
import { getPeerColorClass } from '../helpers/peerColor';
|
import { getPeerColorClass } from '../helpers/peerColor';
|
||||||
import renderText from '../helpers/renderText';
|
import renderText from '../helpers/renderText';
|
||||||
@ -54,6 +55,7 @@ type OwnProps = {
|
|||||||
isInComposer?: boolean;
|
isInComposer?: boolean;
|
||||||
chatTranslations?: ChatTranslatedMessages;
|
chatTranslations?: ChatTranslatedMessages;
|
||||||
requestedChatTranslationLanguage?: string;
|
requestedChatTranslationLanguage?: string;
|
||||||
|
isOpen?: boolean;
|
||||||
observeIntersectionForLoading?: ObserveFn;
|
observeIntersectionForLoading?: ObserveFn;
|
||||||
observeIntersectionForPlaying?: ObserveFn;
|
observeIntersectionForPlaying?: ObserveFn;
|
||||||
onClick: NoneToVoidFunction;
|
onClick: NoneToVoidFunction;
|
||||||
@ -256,4 +258,6 @@ function renderPictogram(
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export const ClosableEmbeddedMessage = freezeWhenClosed(EmbeddedMessage);
|
||||||
|
|
||||||
export default EmbeddedMessage;
|
export default EmbeddedMessage;
|
||||||
|
|||||||
@ -27,13 +27,14 @@ import captureEscKeyListener from '../../../util/captureEscKeyListener';
|
|||||||
import { getPeerColorClass } from '../../common/helpers/peerColor';
|
import { getPeerColorClass } from '../../common/helpers/peerColor';
|
||||||
|
|
||||||
import useContextMenuHandlers from '../../../hooks/useContextMenuHandlers';
|
import useContextMenuHandlers from '../../../hooks/useContextMenuHandlers';
|
||||||
|
import useCurrentOrPrev from '../../../hooks/useCurrentOrPrev';
|
||||||
import useLang from '../../../hooks/useLang';
|
import useLang from '../../../hooks/useLang';
|
||||||
import useLastCallback from '../../../hooks/useLastCallback';
|
import useLastCallback from '../../../hooks/useLastCallback';
|
||||||
import useMenuPosition from '../../../hooks/useMenuPosition';
|
import useMenuPosition from '../../../hooks/useMenuPosition';
|
||||||
import useShowTransition from '../../../hooks/useShowTransition';
|
import useShowTransition from '../../../hooks/useShowTransition';
|
||||||
import useAsyncRendering from '../../right/hooks/useAsyncRendering';
|
import useAsyncRendering from '../../right/hooks/useAsyncRendering';
|
||||||
|
|
||||||
import EmbeddedMessage from '../../common/embedded/EmbeddedMessage';
|
import { ClosableEmbeddedMessage } from '../../common/embedded/EmbeddedMessage';
|
||||||
import Icon from '../../common/Icon';
|
import Icon from '../../common/Icon';
|
||||||
import Button from '../../ui/Button';
|
import Button from '../../ui/Button';
|
||||||
import Menu from '../../ui/Menu';
|
import Menu from '../../ui/Menu';
|
||||||
@ -165,9 +166,10 @@ const ComposerEmbeddedMessage: FC<OwnProps & StateProps> = ({
|
|||||||
}, [handleContextMenuClose, shouldRender]);
|
}, [handleContextMenuClose, shouldRender]);
|
||||||
|
|
||||||
const className = buildClassName('ComposerEmbeddedMessage', transitionClassNames);
|
const className = buildClassName('ComposerEmbeddedMessage', transitionClassNames);
|
||||||
|
const renderingSender = useCurrentOrPrev(sender, true);
|
||||||
const innerClassName = buildClassName(
|
const innerClassName = buildClassName(
|
||||||
'ComposerEmbeddedMessage_inner',
|
'ComposerEmbeddedMessage_inner',
|
||||||
getPeerColorClass(sender),
|
getPeerColorClass(renderingSender),
|
||||||
);
|
);
|
||||||
|
|
||||||
const isShowingReply = replyInfo && !shouldForceShowEditing;
|
const isShowingReply = replyInfo && !shouldForceShowEditing;
|
||||||
@ -203,6 +205,8 @@ const ComposerEmbeddedMessage: FC<OwnProps & StateProps> = ({
|
|||||||
};
|
};
|
||||||
}, [isCurrentUserPremium, isForwarding, message, noAuthors]);
|
}, [isCurrentUserPremium, isForwarding, message, noAuthors]);
|
||||||
|
|
||||||
|
const renderingLeftIcon = useCurrentOrPrev(leftIcon, true);
|
||||||
|
|
||||||
if (!shouldRender) {
|
if (!shouldRender) {
|
||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
@ -211,12 +215,13 @@ const ComposerEmbeddedMessage: FC<OwnProps & StateProps> = ({
|
|||||||
<div className={className} ref={ref} onContextMenu={handleContextMenu} onClick={handleContextMenu}>
|
<div className={className} ref={ref} onContextMenu={handleContextMenu} onClick={handleContextMenu}>
|
||||||
<div className={innerClassName}>
|
<div className={innerClassName}>
|
||||||
<div className="embedded-left-icon">
|
<div className="embedded-left-icon">
|
||||||
{leftIcon && <Icon name={leftIcon} />}
|
{renderingLeftIcon && <Icon name={renderingLeftIcon} />}
|
||||||
{Boolean(replyInfo?.quoteText) && (
|
{Boolean(replyInfo?.quoteText) && (
|
||||||
<Icon name="quote" className="quote-reply" />
|
<Icon name="quote" className="quote-reply" />
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
<EmbeddedMessage
|
<ClosableEmbeddedMessage
|
||||||
|
isOpen={isShown}
|
||||||
className="inside-input"
|
className="inside-input"
|
||||||
replyInfo={replyInfo}
|
replyInfo={replyInfo}
|
||||||
isInComposer
|
isInComposer
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user