diff --git a/src/smart-components/Channel/components/ChannelHeader/index.tsx b/src/smart-components/Channel/components/ChannelHeader/index.tsx index ba5dc4fcb..ed0512fc6 100644 --- a/src/smart-components/Channel/components/ChannelHeader/index.tsx +++ b/src/smart-components/Channel/components/ChannelHeader/index.tsx @@ -13,7 +13,13 @@ import { useChannelContext } from '../../context/ChannelProvider'; import { useMediaQueryContext } from '../../../../lib/MediaQueryContext'; import { noop } from '../../../../utils/utils' -const ChannelHeader: React.FC = () => { +interface ChannelHeaderProps { + className?: string; +} + +const ChannelHeader: React.FC = ({ + className = '', +}) => { const globalStore = useSendbirdStateContext(); const userId = globalStore?.config?.userId; const theme = globalStore?.config?.theme; @@ -33,7 +39,7 @@ const ChannelHeader: React.FC = () => { const { stringSet } = useContext(LocalizationContext); return ( -
+
{ isMobile && ( diff --git a/src/smart-components/Channel/components/ChannelUI/index.tsx b/src/smart-components/Channel/components/ChannelUI/index.tsx index 5b58b7645..ce2a5a30f 100644 --- a/src/smart-components/Channel/components/ChannelUI/index.tsx +++ b/src/smart-components/Channel/components/ChannelUI/index.tsx @@ -1,6 +1,6 @@ import './channel-ui.scss'; -import React, { useEffect, useState } from 'react'; +import React from 'react'; import useSendbirdStateContext from '../../../../hooks/useSendbirdStateContext'; import { useChannelContext } from '../../context/ChannelProvider'; @@ -9,11 +9,8 @@ import ConnectionStatus from '../../../../ui/ConnectionStatus'; import ChannelHeader from '../ChannelHeader'; import MessageList from '../MessageList'; import TypingIndicator from '../TypingIndicator'; -import FrozenNotification from '../FrozenNotification'; -import UnreadCount from '../UnreadCount'; import MessageInputWrapper from '../MessageInput'; import { RenderCustomSeparatorProps, RenderMessageProps } from '../../../../types'; -import * as messageActionTypes from '../../context/dux/actionTypes'; export interface ChannelUIProps { isLoading?: boolean; @@ -23,9 +20,9 @@ export interface ChannelUIProps { renderChannelHeader?: () => React.ReactElement; renderMessage?: (props: RenderMessageProps) => React.ReactElement; renderMessageInput?: () => React.ReactElement; - renderFileUploadIcon?: () => React.ReactElement; - renderVoiceMessageIcon?: () => React.ReactElement; - renderSendMessageIcon?: () => React.ReactElement; + renderFileUploadIcon?: () => React.ReactElement; + renderVoiceMessageIcon?: () => React.ReactElement; + renderSendMessageIcon?: () => React.ReactElement; renderTypingIndicator?: () => React.ReactElement; renderCustomSeparator?: (props: RenderCustomSeparatorProps) => React.ReactElement; } @@ -45,28 +42,9 @@ const ChannelUI: React.FC = ({ renderSendMessageIcon, }: ChannelUIProps) => { const { - currentGroupChannel, channelUrl, isInvalid, - unreadSince, - loading, - setInitialTimeStamp, - setAnimatedMessageId, - setHighLightedMessageId, - scrollRef, - messagesDispatcher, - disableMarkAsRead, } = useChannelContext(); - const [unreadCount, setUnreadCount] = useState(0); - useEffect(() => { - // simple debounce to avoid flicker of UnreadCount badge - const handler = setTimeout(() => { - setUnreadCount(currentGroupChannel?.unreadMessageCount); - }, 1000); - return () => { - clearTimeout(handler); - } - }, [currentGroupChannel?.unreadMessageCount]); const globalStore = useSendbirdStateContext(); const sdkError = globalStore?.stores?.sdkStore?.error; @@ -122,62 +100,16 @@ const ChannelUI: React.FC = ({ } return (
- { - renderChannelHeader?.() || ( - - ) - } - { - currentGroupChannel?.isFrozen && ( - - ) - } - { - unreadCount > 0 && ( - { - setUnreadCount(0); - if (scrollRef?.current?.scrollTop) { - scrollRef.current.scrollTop = scrollRef?.current?.scrollHeight - scrollRef?.current?.offsetHeight; - } - if (!disableMarkAsRead) { - try { - currentGroupChannel?.markAsRead(); - } catch { - // - } - messagesDispatcher({ - type: messageActionTypes.MARK_AS_READ, - payload: { channel: currentGroupChannel }, - }); - } - setInitialTimeStamp(null); - setAnimatedMessageId(null); - setHighLightedMessageId(null); - }} - /> - ) - } - { - loading - ? ( -
- { - renderPlaceholderLoader?.() || ( - - ) - } -
- ) : ( - - ) - } + {renderChannelHeader?.() || ( + + )} +
{ renderMessageInput?.() || ( diff --git a/src/smart-components/Channel/components/FrozenNotification/index.tsx b/src/smart-components/Channel/components/FrozenNotification/index.tsx index 3467bc5ae..e4ea28c7f 100644 --- a/src/smart-components/Channel/components/FrozenNotification/index.tsx +++ b/src/smart-components/Channel/components/FrozenNotification/index.tsx @@ -5,10 +5,16 @@ import './frozen-notification.scss'; import { LocalizationContext } from '../../../../lib/LocalizationContext'; import Label, { LabelTypography } from '../../../../ui/Label'; -const FrozenNotification = (): JSX.Element => { +interface FrozenNotificationProps { + className?: string; +} + +const FrozenNotification = ({ + className = '', +}: FrozenNotificationProps): React.ReactElement => { const { stringSet } = useContext(LocalizationContext); return ( -
+