Middle Header: Fix animation when hiding pinned messages (#1446)

This commit is contained in:
Alexander Zinchuk 2021-09-16 11:27:15 +03:00
parent c06e0ecc79
commit 20cf5ecdda

View File

@ -138,7 +138,8 @@ const MiddleHeader: FC<OwnProps & StateProps & DispatchProps> = ({
const [pinnedMessageIndex, setPinnedMessageIndex] = useState(0); const [pinnedMessageIndex, setPinnedMessageIndex] = useState(0);
const pinnedMessageId = Array.isArray(pinnedMessageIds) ? pinnedMessageIds[pinnedMessageIndex] : pinnedMessageIds; const pinnedMessageId = Array.isArray(pinnedMessageIds) ? pinnedMessageIds[pinnedMessageIndex] : pinnedMessageIds;
const pinnedMessage = messagesById && pinnedMessageId ? messagesById[pinnedMessageId] : undefined; const pinnedMessage = messagesById && pinnedMessageId ? messagesById[pinnedMessageId] : undefined;
const pinnedMessagesCount = Array.isArray(pinnedMessageIds) ? pinnedMessageIds.length : (pinnedMessageIds ? 1 : 0); const pinnedMessagesCount = Array.isArray(pinnedMessageIds)
? pinnedMessageIds.length : (pinnedMessageIds ? 1 : undefined);
const chatTitleLength = chat && getChatTitle(lang, chat).length; const chatTitleLength = chat && getChatTitle(lang, chat).length;
const topMessageTitle = topMessageSender ? getSenderTitle(lang, topMessageSender) : undefined; const topMessageTitle = topMessageSender ? getSenderTitle(lang, topMessageSender) : undefined;
@ -176,7 +177,7 @@ const MiddleHeader: FC<OwnProps & StateProps & DispatchProps> = ({
if (pinnedMessage) { if (pinnedMessage) {
focusMessage({ chatId: pinnedMessage.chatId, threadId, messageId: pinnedMessage.id }); focusMessage({ chatId: pinnedMessage.chatId, threadId, messageId: pinnedMessage.id });
const newIndex = cycleRestrict(pinnedMessagesCount, pinnedMessageIndex + 1); const newIndex = cycleRestrict(pinnedMessagesCount || 1, pinnedMessageIndex + 1);
setPinnedMessageIndex(newIndex); setPinnedMessageIndex(newIndex);
} }
}, [pinnedMessage, focusMessage, threadId, pinnedMessagesCount, pinnedMessageIndex]); }, [pinnedMessage, focusMessage, threadId, pinnedMessagesCount, pinnedMessageIndex]);
@ -255,7 +256,9 @@ const MiddleHeader: FC<OwnProps & StateProps & DispatchProps> = ({
transitionClassNames: pinnedMessageClassNames, transitionClassNames: pinnedMessageClassNames,
} = useShowTransition(pinnedMessage && !shouldRenderAudioPlayer); } = useShowTransition(pinnedMessage && !shouldRenderAudioPlayer);
const renderingPinnedMessage = useCurrentOrPrev(pinnedMessage); const renderingPinnedMessage = useCurrentOrPrev(pinnedMessage, true);
const renderingPinnedMessagesCount = useCurrentOrPrev(pinnedMessagesCount, true);
const renderingCanUnpin = useCurrentOrPrev(canUnpin, true);
const renderingPinnedMessageTitle = useCurrentOrPrev(topMessageTitle); const renderingPinnedMessageTitle = useCurrentOrPrev(topMessageTitle);
const canRevealTools = (shouldRenderPinnedMessage && renderingPinnedMessage) const canRevealTools = (shouldRenderPinnedMessage && renderingPinnedMessage)
@ -397,11 +400,11 @@ const MiddleHeader: FC<OwnProps & StateProps & DispatchProps> = ({
<HeaderPinnedMessage <HeaderPinnedMessage
key={chatId} key={chatId}
message={renderingPinnedMessage} message={renderingPinnedMessage}
count={pinnedMessagesCount} count={renderingPinnedMessagesCount || 0}
index={pinnedMessageIndex} index={pinnedMessageIndex}
customTitle={renderingPinnedMessageTitle} customTitle={renderingPinnedMessageTitle}
className={pinnedMessageClassNames} className={pinnedMessageClassNames}
onUnpinMessage={canUnpin ? handleUnpinMessage : undefined} onUnpinMessage={renderingCanUnpin ? handleUnpinMessage : undefined}
onClick={handlePinnedMessageClick} onClick={handlePinnedMessageClick}
onAllPinnedClick={handleAllPinnedClick} onAllPinnedClick={handleAllPinnedClick}
/> />