diff --git a/src/components/middle/MessageScroll.tsx b/src/components/middle/MessageScroll.tsx index 715bfc72d..00923d877 100644 --- a/src/components/middle/MessageScroll.tsx +++ b/src/components/middle/MessageScroll.tsx @@ -100,7 +100,7 @@ const MessageScroll: FC = ({ if (target.className === 'backwards-trigger') { resetScroll(containerRef.current!); loadMoreBackwards(); - } else if (target.className === 'forwards-trigger' && (target as HTMLDivElement).dataset.isActive) { + } else if (target.className === 'forwards-trigger') { resetScroll(containerRef.current!); loadMoreForwards(); } @@ -116,10 +116,8 @@ const MessageScroll: FC = ({ } = useIntersectionObserver({ rootRef: containerRef, margin: FAB_THRESHOLD, - }, ([{ target }]) => { - if ((target as HTMLDivElement).dataset.isActive) { - updateFabVisibility(); - } + }, () => { + updateFabVisibility(); }); useOnIntersect(fabTriggerRef, observeIntersectionForFab); @@ -175,13 +173,11 @@ const MessageScroll: FC = ({ ref={forwardsTriggerRef} key="forwards-trigger" className="forwards-trigger" - data-is-active={!isViewportNewest} />
); diff --git a/src/components/middle/MiddleColumn.tsx b/src/components/middle/MiddleColumn.tsx index 3b8719f3a..31fb1a2be 100644 --- a/src/components/middle/MiddleColumn.tsx +++ b/src/components/middle/MiddleColumn.tsx @@ -100,7 +100,7 @@ const MiddleColumn: FC = ({ const { width: windowWidth } = useWindowSize(); const [dropAreaState, setDropAreaState] = useState(DropAreaState.None); - const [isFabShown, setIsFabShown] = useState(false); + const [isFabShown, setIsFabShown] = useState(); const [isUnpinModalOpen, setIsUnpinModalOpen] = useState(false); const hasTools = hasPinnedOrAudioMessage && ( @@ -119,6 +119,7 @@ const MiddleColumn: FC = ({ const renderingMessageListType = usePrevDuringAnimation(messageListType, CLOSE_ANIMATION_DURATION); const renderingCanPost = usePrevDuringAnimation(canPost, CLOSE_ANIMATION_DURATION); const renderingHasTools = usePrevDuringAnimation(hasTools, CLOSE_ANIMATION_DURATION); + const renderingIsFabShown = usePrevDuringAnimation(isFabShown, CLOSE_ANIMATION_DURATION); useEffect(() => { return chatId @@ -130,6 +131,7 @@ const MiddleColumn: FC = ({ useEffect(() => { setDropAreaState(DropAreaState.None); + setIsFabShown(undefined); }, [chatId]); useEffect(() => { @@ -282,7 +284,10 @@ const MiddleColumn: FC = ({ )} - + {IS_MOBILE_SCREEN && } diff --git a/src/components/middle/ScrollDownButton.tsx b/src/components/middle/ScrollDownButton.tsx index 8870269c4..b8c1bf47d 100644 --- a/src/components/middle/ScrollDownButton.tsx +++ b/src/components/middle/ScrollDownButton.tsx @@ -7,7 +7,6 @@ import { GlobalActions, MessageListType } from '../../global/types'; import { MAIN_THREAD_ID } from '../../api/types'; import { selectChat, selectCurrentMessageList } from '../../modules/selectors'; -import { getCanPostInChat } from '../../modules/helpers'; import { formatIntegerCompact } from '../../util/textFormat'; import buildClassName from '../../util/buildClassName'; import { pick } from '../../util/iteratees'; @@ -19,11 +18,11 @@ import './ScrollDownButton.scss'; type OwnProps = { isShown: boolean; + canPost?: boolean; }; type StateProps = { messageListType?: MessageListType; - canPost?: boolean; unreadCount?: number; }; @@ -33,8 +32,8 @@ const FOCUS_MARGIN = 20; const ScrollDownButton: FC = ({ isShown, - messageListType, canPost, + messageListType, unreadCount, focusLastMessage, }) => { @@ -50,8 +49,8 @@ const ScrollDownButton: FC = ({ focusLastMessage(); } else { const messagesContainer = elementRef.current!.parentElement!.querySelector('.MessageList')!; - const messsageElements = messagesContainer.querySelectorAll('.message-list-item'); - const lastMessageElement = messsageElements[messsageElements.length - 1]; + const messageElements = messagesContainer.querySelectorAll('.message-list-item'); + const lastMessageElement = messageElements[messageElements.length - 1]; if (!lastMessageElement) { return; } @@ -94,11 +93,9 @@ export default memo(withGlobal( const { chatId, threadId, type: messageListType } = currentMessageList; const chat = selectChat(global, chatId); - const canPost = chat && getCanPostInChat(chat, threadId); return { messageListType, - canPost, unreadCount: chat && threadId === MAIN_THREAD_ID && messageListType === 'thread' ? chat.unreadCount : undefined, }; },