This repository was archived by the owner on Aug 30, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 17
/
Copy pathOpenChannel.js.map
1 lines (1 loc) · 241 KB
/
OpenChannel.js.map
1
{"version":3,"file":"OpenChannel.js","sources":["../src/smart-components/OpenchannelConversation/utils.ts","../src/smart-components/OpenchannelConversation/components/MessageInpuetWrapper.tsx","../src/smart-components/OpenchannelConversation/components/FrozenNotification.tsx","../src/ui/OpenchannelConversationHeader/index.tsx","../src/ui/OpenchannelUserMessage/utils.ts","../src/utils/openChannelUtils.ts","../src/ui/OpenchannelUserMessage/index.tsx","../src/ui/OpenChannelAdminMessage/index.tsx","../src/ui/OpenchannelOGMessage/utils.ts","../src/ui/OpenchannelOGMessage/index.tsx","../src/ui/OpenchannelThumbnailMessage/utils.ts","../src/ui/OpenchannelThumbnailMessage/index.tsx","../src/ui/OpenchannelFileMessage/utils.ts","../src/ui/OpenchannelFileMessage/index.tsx","../src/smart-components/OpenchannelConversation/components/RemoveMessageModal.tsx","../src/smart-components/OpenchannelConversation/components/types.ts","../src/smart-components/OpenchannelConversation/components/MessageHOC.tsx","../src/smart-components/OpenchannelConversation/components/OpenchannelConversationScroll.tsx","../src/smart-components/OpenchannelConversation/dux/actionTypes.ts","../src/smart-components/OpenchannelConversation/dux/reducers.ts","../src/smart-components/OpenchannelConversation/dux/initialState.ts","../src/smart-components/OpenchannelConversation/hooks/useSetChannel.ts","../src/smart-components/OpenchannelConversation/hooks/useHandleChannelEvents.ts","../src/smart-components/OpenchannelConversation/hooks/useInitialMessagesFetch.ts","../src/smart-components/OpenchannelConversation/hooks/useScrollCallback.ts","../src/smart-components/OpenchannelConversation/hooks/useCheckScrollBottom.ts","../src/smart-components/OpenchannelConversation/hooks/useSendMessageCallback.ts","../src/smart-components/OpenchannelConversation/hooks/useFileUploadCallback.ts","../src/smart-components/OpenchannelConversation/hooks/useUpdateMessageCallback.ts","../src/smart-components/OpenchannelConversation/hooks/useDeleteMessageCallback.ts","../src/smart-components/OpenchannelConversation/hooks/useResendMessageCallback.ts","../src/smart-components/OpenchannelConversation/index.tsx"],"sourcesContent":["import format from 'date-fns/format';\nimport Sendbird from 'sendbird';\nimport SendbirdUIKit from '../../index';\n\nexport const getMessageCreatedAt = (message: SendbirdUIKit.EveryMessage): string => format(message.createdAt, 'p');\n\nexport const scrollIntoLast = (intialTry = 0): void => {\n const MAX_TRIES = 10;\n const currentTry = intialTry;\n if (currentTry > MAX_TRIES) {\n return;\n }\n try {\n const scrollDOM = document.querySelector('.sendbird-openchannel-conversation-scroll');\n // eslint-disable-next-line no-multi-assign\n scrollDOM.scrollTop = scrollDOM.scrollHeight;\n } catch (error) {\n setTimeout(() => {\n scrollIntoLast(currentTry + 1);\n }, 500 * currentTry);\n }\n};\n\n\nexport const isSameGroup = (\n message: SendbirdUIKit.EveryMessage,\n comparingMessage: SendbirdUIKit.EveryMessage,\n): boolean => {\n if (\n !message\n || !comparingMessage\n || message.messageType === 'admin'\n || comparingMessage.messageType === 'admin'\n || !message.sender\n || !comparingMessage.sender\n || !message.createdAt\n || !comparingMessage.createdAt\n || !message.sender.userId\n || !comparingMessage.sender.userId\n ) {\n return false\n }\n\n return (\n message.sendingStatus === comparingMessage.sendingStatus\n && message.sender.userId === comparingMessage.sender.userId\n && getMessageCreatedAt(message) === getMessageCreatedAt(comparingMessage)\n );\n};\n\nexport const compareMessagesForGrouping = (\n prevMessage: SendbirdUIKit.EveryMessage,\n currMessage: SendbirdUIKit.EveryMessage,\n nextMessage: SendbirdUIKit.EveryMessage,\n): [boolean, boolean] => (\n [\n isSameGroup(prevMessage, currMessage),\n isSameGroup(currMessage, nextMessage),\n ]\n );\n\nexport const kFormatter = (num: number): string => {\n if (Math.abs(num) > 999999) {\n return `${(Math.abs(num) / 1000000).toFixed(1)}M`;\n }\n\n if (Math.abs(num) > 999) {\n return `${(Math.abs(num) / 1000).toFixed(1)}K`;\n }\n\n return `${num}`;\n};\n\nexport const isOperator = (openChannel: Sendbird.OpenChannel, userId: string): boolean => {\n const { operators } = openChannel;\n if (operators.map(operator => operator.userId).indexOf(userId) < 0) {\n return false;\n }\n return true;\n};\n\nexport const isDisabledBecauseFrozen = (openChannel: Sendbird.OpenChannel, userId: string): boolean => {\n const { isFrozen } = openChannel;\n return isFrozen && !isOperator(openChannel, userId);\n};\n\nexport const isDisabledBecauseMuted = (mutedParticipantIds: Array<string>, userId: string): boolean => {\n return mutedParticipantIds.indexOf(userId) < 0;\n};\n\nexport const fetchWithListQuery = (\n listQuery: SendbirdUIKit.UserListQuery,\n logger: SendbirdUIKit.Logger,\n eachQueryNextCallback: (users: Array<Sendbird.User>) => void,\n): void => {\n const fetchList = (query) => {\n const { hasNext } = query;\n if (hasNext) {\n query.next((error, users) => {\n if (!error) {\n eachQueryNextCallback(users);\n fetchList(query);\n } else {\n logger.warning('OpenChannel | FetchUserList failed', error);\n }\n });\n } else {\n logger.info('OpenChannel | FetchUserList finished');\n }\n };\n logger.info('OpenChannel | FetchUserList start', listQuery);\n fetchList(listQuery);\n};\n\nexport const pxToNumber = (px: string | number): number | void => {\n if (typeof px === 'number') {\n return px;\n }\n if (typeof px === 'string') {\n const parsed = Number.parseFloat(px);\n if (!Number.isNaN(parsed)) {\n return parsed;\n }\n }\n return null;\n};\n","import React, { useContext } from 'react';\nimport Sendbird from 'sendbird';\nimport { RenderOpenChannelMessageInputProps } from '../../../index';\nimport { LocalizationContext } from '../../../lib/LocalizationContext';\nimport MessageInput from '../../../ui/MessageInput';\n\ninterface Props {\n channel: Sendbird.OpenChannel;\n user: Sendbird.User;\n disabled: boolean;\n onSendMessage(): void;\n onFileUpload(file_: File): void;\n renderMessageInput?(renderProps: RenderOpenChannelMessageInputProps): JSX.Element;\n}\n\nconst MessageInputWrapper = ({\n channel,\n user,\n disabled,\n onSendMessage,\n onFileUpload,\n renderMessageInput,\n}: Props, ref: React.RefObject<HTMLInputElement>): JSX.Element => {\n if (!channel) {\n return;\n }\n\n const { stringSet } = useContext(LocalizationContext);\n\n if (renderMessageInput) {\n return renderMessageInput({ channel, user, disabled });\n }\n\n return (\n <div className=\"sendbird-openchannel-footer\">\n <MessageInput\n ref={ref}\n disabled={disabled}\n onSendMessage={onSendMessage}\n onFileUpload={onFileUpload}\n placeholder={(\n disabled\n && stringSet.CHANNEL__MESSAGE_INPUT__PLACE_HOLDER__DISABLED\n // add disabled because of muted state\n )}\n />\n </div>\n );\n};\n\nexport default React.forwardRef(MessageInputWrapper);\n","import React, { useContext } from 'react';\n\nimport './frozen-notification.scss';\n\nimport { LocalizationContext } from '../../../lib/LocalizationContext';\nimport Label, { LabelTypography } from '../../../ui/Label';\n\nconst FrozenNotification = (): JSX.Element => {\n const { stringSet } = useContext(LocalizationContext);\n return (\n <div className=\"sendbird-frozen-channel-notification\">\n <Label\n className=\"sendbird-frozen-channel-notification__text\"\n type={LabelTypography.CAPTION_2}\n >\n {stringSet.CHANNEL_FROZEN}\n </Label>\n </div>\n );\n}\n\nexport default FrozenNotification;\n","import React, { useContext } from 'react';\nimport './index.scss';\n\nimport Avatar from '../Avatar';\nimport Icon, { IconColors, IconTypes } from '../Icon';\nimport IconButton from '../IconButton';\nimport Label, { LabelTypography, LabelColors } from '../Label';\nimport { LocalizationContext } from '../../lib/LocalizationContext';\n\ninterface Props {\n coverImage?: string;\n title?: string;\n subTitle?: string;\n amIOperator?: boolean;\n onActionClick?(): void;\n}\n\nexport default function OpenchannelConversationHeader({\n coverImage,\n title,\n subTitle,\n amIOperator,\n onActionClick,\n}: Props): JSX.Element {\n const { stringSet } = useContext(LocalizationContext);\n\n return (\n <div className=\"sendbird-openchannel-conversation-header\">\n <div className=\"sendbird-openchannel-conversation-header__left\">\n {\n coverImage ? (\n <Avatar\n className=\"sendbird-openchannel-conversation-header__left__cover-image\"\n src={coverImage}\n alt=\"channel cover image\"\n width=\"32px\"\n height=\"32px\"\n />\n ) : (\n <div\n className=\"sendbird-openchannel-conversation-header__left__cover-image--icon\"\n style={{ width: 32, height: 32 }}\n >\n <Icon\n type={IconTypes.CHANNELS}\n fillColor={IconColors.CONTENT}\n width=\"18px\"\n height=\"18px\"\n />\n </div>\n )\n }\n <Label\n className=\"sendbird-openchannel-conversation-header__left__title\"\n type={LabelTypography.H_2}\n color={LabelColors.ONBACKGROUND_1}\n >\n {title || stringSet.NO_TITLE}\n </Label>\n <Label\n className=\"sendbird-openchannel-conversation-header__left__sub-title\"\n type={LabelTypography.BODY_2}\n color={LabelColors.ONBACKGROUND_2}\n >\n {subTitle || stringSet.NO_TITLE}\n </Label>\n </div>\n <div className=\"sendbird-openchannel-conversation-header__right\">\n <IconButton\n className=\"sendbird-openchannel-conversation-header__right__trigger\"\n width=\"32px\"\n height=\"32px\"\n onClick={onActionClick}\n >\n <Icon\n type={(\n amIOperator\n ? IconTypes.INFO\n : IconTypes.MEMBERS\n )}\n fillColor={IconColors.PRIMARY}\n width=\"24px\"\n height=\"24px\"\n />\n </IconButton>\n </div>\n </div>\n );\n}\n","export const copyToClipboard = (text: string): boolean => {\n // @ts-ignore: Unreachable code error\n if (window.clipboardData && window.clipboardData.setData) {\n // Internet Explorer-specific code path to prevent textarea being shown while dialog is visible.\n // @ts-ignore: Unreachable code error\n return window.clipboardData.setData('Text', text);\n }\n if (document.queryCommandSupported && document.queryCommandSupported('copy')) {\n const textarea = document.createElement('textarea');\n textarea.textContent = text;\n textarea.style.position = 'fixed'; // Prevent scrolling to bottom of page in Microsoft Edge.\n document.body.appendChild(textarea);\n textarea.select();\n try {\n return document.execCommand('copy'); // Security exception may be thrown by some browsers.\n } catch (ex) {\n return false;\n } finally {\n document.body.removeChild(textarea);\n }\n }\n return false;\n};\n\nexport default { copyToClipboard };\n","import Sendbird from 'sendbird';\nimport { ClientUserMessage, ClientFileMessage } from '../index';\n\nconst OpenChannelMessageStatusTypes = {\n NONE: 'none',\n PENDING: 'pending',\n FAILED: 'failed',\n CANCELED: 'canceled',\n SUCCEEDED: 'succeeded'\n};\n\nexport const getSenderFromMessage = (message: ClientUserMessage | ClientFileMessage): Sendbird.User => {\n return message.sender || message._sender;\n};\n\nexport const checkIsSent = (status: string): boolean => (status === OpenChannelMessageStatusTypes.SUCCEEDED);\nexport const checkIsPending = (status: string): boolean => (status === OpenChannelMessageStatusTypes.PENDING);\nexport const checkIsFailed = (status: string): boolean => (status === OpenChannelMessageStatusTypes.FAILED);\n\nexport const checkIsByMe = (message: ClientFileMessage | ClientUserMessage, userId: string): boolean => (getSenderFromMessage(message).userId === userId);\n\ninterface isFineCopyParams {\n message: ClientUserMessage;\n status: string;\n userId: string;\n}\nexport const isFineCopy = ({ message }: isFineCopyParams): boolean => {\n return (message.messageType === 'user' && message.message.length > 0);\n};\n\ninterface isFineResendParams {\n message: ClientFileMessage | ClientUserMessage;\n status: string;\n userId: string;\n}\nexport const isFineResend = ({ message, status, userId }: isFineResendParams): boolean => {\n return checkIsByMe(message, userId)\n && checkIsFailed(status)\n && message.isResendable\n && message.isResendable();\n};\n\ninterface isFineEditParams {\n message: ClientUserMessage;\n status: string;\n userId: string;\n}\nexport const isFineEdit = ({ message, status, userId }: isFineEditParams): boolean => {\n return checkIsByMe(message, userId) && checkIsSent(status);\n};\n\ninterface isFineDeleteParams {\n message: ClientFileMessage | ClientUserMessage;\n status: string;\n userId: string;\n}\nexport const isFineDelete = ({ message, userId }: isFineDeleteParams): boolean => {\n return checkIsByMe(message, userId);\n};\n\ninterface showMenuTriggerParams {\n message: ClientUserMessage | ClientFileMessage;\n status: string;\n userId: string;\n}\nexport const showMenuTrigger = (props: showMenuTriggerParams): boolean => {\n const { message, status, userId } = props;\n if (message.messageType === 'user') {\n return (\n isFineDelete({ message, status, userId })\n || isFineEdit({ message, status, userId })\n || isFineCopy({ message, status, userId })\n || isFineResend({ message, status, userId })\n );\n } else {\n return (\n isFineDelete({ message, status, userId })\n || isFineResend({ message, status, userId })\n );\n }\n};\n","import React, {\n useMemo,\n useContext,\n useRef,\n useState,\n ReactElement,\n useEffect,\n} from 'react';\nimport format from 'date-fns/format';\nimport './index.scss';\n\nimport Avatar from '../Avatar';\nimport ContextMenu, { MenuItems, MenuItem } from '../ContextMenu';\nimport Icon, { IconTypes, IconColors } from '../Icon';\nimport IconButton from '../IconButton';\nimport Label, { LabelTypography, LabelColors } from '../Label';\nimport Loader from '../Loader';\nimport UserProfile from '../UserProfile';\nimport { UserProfileContext } from '../../lib/UserProfileContext';\n\nimport { LocalizationContext } from '../../lib/LocalizationContext';\nimport { copyToClipboard } from './utils';\nimport uuidv4 from '../../utils/uuid';\nimport { ClientUserMessage } from '../../index';\nimport {\n checkIsByMe,\n checkIsPending,\n checkIsFailed,\n isFineCopy,\n isFineEdit,\n isFineResend,\n isFineDelete,\n showMenuTrigger,\n} from '../../utils/openChannelUtils';\nimport { getSenderFromMessage } from '../../utils/openChannelUtils';\n\ninterface Props {\n className?: string | Array<string>;\n message: ClientUserMessage;\n userId: string;\n disabled?: boolean;\n showEdit(bool: boolean): void;\n showRemove(bool: boolean): void;\n resendMessage(message: ClientUserMessage): void;\n chainTop?: boolean;\n chainBottom?: boolean;\n status: string;\n}\n\nexport default function OpenchannelUserMessage({\n className,\n message,\n userId,\n resendMessage,\n disabled,\n showEdit,\n showRemove,\n chainTop,\n status,\n}: Props): ReactElement {\n if (!message || message.messageType !== 'user') {\n return null;\n }\n\n // hooks\n const { stringSet } = useContext(LocalizationContext);\n const { disableUserProfile, renderUserProfile } = useContext(UserProfileContext);\n const messageRef = useRef(null);\n const avatarRef = useRef(null);\n const contextMenuRef = useRef(null);\n const [contextStyle, setContextStyle] = useState({});\n\n // consts\n const isByMe = checkIsByMe(message, userId);\n const isPending = checkIsPending(status);\n const isFailed = checkIsFailed(status);\n const sender = getSenderFromMessage(message);\n\n const MemoizedMessageText = useMemo(() => () => {\n const splitMessage = message.message.split(/\\r/);\n const matchedMessage = splitMessage.map((word) => (word !== '' ? word : <br />));\n if (message.updatedAt > 0) {\n matchedMessage.push(\n <Label\n key={uuidv4()}\n type={LabelTypography.BODY_1}\n color={LabelColors.ONBACKGROUND_2}\n calssName=\"sendbird-openchannel-user-message-word\"\n >\n {` ${stringSet.MESSAGE_EDITED} `}\n </Label>,\n );\n }\n return matchedMessage;\n }, [message, message.updatedAt]);\n\n // place context menu top depending clientHeight of message component\n useEffect(() => {\n if (messageRef?.current?.clientHeight > 36) {\n setContextStyle({ top: '8px ' });\n } else {\n setContextStyle({ top: '2px' });\n }\n }, [window.innerWidth]);\n\n return (\n <div\n className={[\n ...(Array.isArray(className) ? className : [className]),\n 'sendbird-openchannel-user-message',\n ].join(' ')}\n ref={messageRef}\n >\n <div className=\"sendbird-openchannel-user-message__left\">\n {\n !chainTop && (\n <ContextMenu\n menuTrigger={(toggleDropdown) => (\n <Avatar\n className=\"sendbird-openchannel-user-message__left__avatar\"\n src={sender.profileUrl || ''}\n ref={avatarRef}\n width=\"28px\"\n height=\"28px\"\n onClick={() => {\n if (!disableUserProfile) {\n toggleDropdown();\n }\n }}\n />\n )}\n menuItems={(closeDropdown) => (\n <MenuItems\n parentRef={avatarRef}\n parentContainRef={avatarRef}\n closeDropdown={closeDropdown}\n style={{ paddingTop: 0, paddingBottom: 0 }}\n >\n {\n renderUserProfile\n ? (\n renderUserProfile({\n user: sender,\n close: closeDropdown,\n })\n )\n : (\n <UserProfile\n user={sender}\n onSuccess={closeDropdown}\n disableMessaging\n />\n )\n }\n </MenuItems>\n )}\n />\n )\n }\n </div>\n <div className=\"sendbird-openchannel-user-message__right\">\n {\n !chainTop && (\n <div className=\"sendbird-openchannel-user-message__right__top\">\n <Label\n className=\"sendbird-openchannel-user-message__right__top__sender-name\"\n type={LabelTypography.CAPTION_2}\n color={isByMe ? LabelColors.SECONDARY_3 : LabelColors.ONBACKGROUND_2}\n >\n {\n sender && (\n sender.friendName\n || sender.nickname\n || sender.userId\n )\n }\n </Label>\n <Label\n className=\"sendbird-openchannel-user-message__right__top__sent-at\"\n type={LabelTypography.CAPTION_3}\n color={LabelColors.ONBACKGROUND_3}\n >\n {\n message.createdAt && (\n format(message.createdAt, 'p')\n )\n }\n </Label>\n </div>\n )\n }\n <div className=\"sendbird-openchannel-user-message__right__bottom\">\n <Label\n className=\"sendbird-openchannel-user-message__right__bottom__message\"\n type={LabelTypography.BODY_1}\n color={LabelColors.ONBACKGROUND_1}\n >\n {MemoizedMessageText()}\n </Label>\n </div>\n {\n (isPending || isFailed) && (\n <div className=\"sendbird-openchannel-user-message__right__tail\">\n {\n isPending && (\n <Loader\n width=\"16px\"\n height=\"16px\"\n >\n <Icon\n className=\"sendbird-openchannel-user-message__right__tail__pending\"\n type={IconTypes.SPINNER}\n fillColor={IconColors.PRIMARY}\n width=\"16px\"\n height=\"16px\"\n />\n </Loader>\n )\n }\n {\n isFailed && (\n <Icon\n className=\"sendbird-openchannel-user-message__right__tail__failed\"\n type={IconTypes.ERROR}\n width=\"16px\"\n height=\"16px\"\n />\n )\n }\n </div>\n )\n }\n </div>\n {\n <div\n className=\"sendbird-openchannel-user-message__context-menu\"\n ref={contextMenuRef}\n style={contextStyle}\n >\n <ContextMenu\n menuTrigger={(toggleDropdown) => (\n showMenuTrigger({ message: message, userId: userId, status: status}) && (\n <IconButton\n className=\"sendbird-openchannel-user-message__context-menu--icon\"\n width=\"32px\"\n height=\"32px\"\n onClick={() => {\n toggleDropdown();\n }}\n >\n <Icon\n type={IconTypes.MORE}\n fillColor={IconColors.CONTENT_INVERSE}\n width=\"24px\"\n height=\"24px\"\n />\n </IconButton>\n )\n )}\n menuItems={(closeDropdown) => (\n <MenuItems\n parentRef={contextMenuRef}\n parentContainRef={contextMenuRef}\n closeDropdown={closeDropdown}\n openLeft\n >\n {\n isFineCopy({ message: message, userId: userId, status: status }) && (\n <MenuItem\n className=\"sendbird-openchannel-user-message__context-menu__copy\"\n onClick={() => {\n copyToClipboard(message.message);\n closeDropdown();\n }}\n >\n {stringSet.CONTEXT_MENU_DROPDOWN__COPY}\n </MenuItem>\n )\n }\n {\n isFineEdit({ message: message, userId: userId, status: status }) && (\n <MenuItem\n className=\"sendbird-openchannel-user-message__context-menu__edit\"\n onClick={() => {\n if (disabled) {\n return;\n }\n showEdit(true);\n closeDropdown();\n }}\n >\n {stringSet.CONTEXT_MENU_DROPDOWN__EDIT}\n </MenuItem>\n )\n }\n {\n isFineResend({ message: message, userId: userId, status: status }) && (\n <MenuItem\n className=\"sendbird-openchannel-user-message__context-menu__resend\"\n onClick={() => {\n resendMessage(message);\n closeDropdown();\n }}\n >\n {stringSet.CONTEXT_MENU_DROPDOWN__RESEND}\n </MenuItem>\n )\n }\n {\n isFineDelete({ message: message, userId: userId, status: status }) && (\n <MenuItem\n className=\"sendbird-openchannel-user-message__context-menu__delete\"\n onClick={() => {\n if (disabled) {\n return;\n }\n showRemove(true);\n closeDropdown();\n }}\n >\n {stringSet.CONTEXT_MENU_DROPDOWN__DELETE}\n </MenuItem>\n )\n }\n </MenuItems>\n )}\n />\n </div>\n }\n </div>\n );\n}\n","import React, { ReactElement } from 'react';\nimport { ClientAdminMessage } from '../../index';\nimport './index.scss';\n\nimport Label, { LabelColors, LabelTypography } from '../Label';\n\ninterface Props {\n className?: string | Array<string>;\n message: ClientAdminMessage;\n}\n\nexport default function OpenChannelAdminMessage({\n className,\n message,\n}: Props): ReactElement {\n return (\n <div\n className={[\n ...(Array.isArray(className) ? className : [className]),\n 'sendbird-openchannel-admin-message',\n ].join(' ')}\n >\n <Label\n className=\"sendbird-openchannel-admin-message__text\"\n type={LabelTypography.CAPTION_2}\n color={LabelColors.ONBACKGROUND_2}\n >\n {message.message || ''}\n </Label>\n </div>\n );\n}\n","import Sendbird from 'sendbird';\n\nexport const URL_REG = /[-a-zA-Z0-9@:%._+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b([-a-zA-Z0-9()@:%_+.~#?&//=]*)/;\nexport const createUrlTester = (regexp: RegExp) => (text: string): boolean => regexp.test(text);\nexport const checkOGIsEnalbed = (message: Sendbird.UserMessage): boolean => {\n const { ogMetaData } = message;\n if (!ogMetaData) {\n return false;\n }\n const { url } = ogMetaData;\n if (!url) {\n return false;\n }\n return true;\n};\n","import React, { useState, useContext, useMemo, useRef, useEffect } from 'react';\nimport format from 'date-fns/format';\nimport './index.scss';\n\nimport Avatar from '../Avatar';\nimport ContextMenu, { MenuItems, MenuItem } from '../ContextMenu';\nimport Icon, { IconTypes, IconColors } from '../Icon';\nimport IconButton from '../IconButton';\nimport ImageRenderer from '../ImageRenderer';\nimport LinkLabel from '../LinkLabel';\nimport Label, { LabelTypography, LabelColors } from '../Label';\nimport Loader from '../Loader';\nimport UserProfile from '../UserProfile';\nimport { UserProfileContext } from '../../lib/UserProfileContext';\n\nimport uuidv4 from '../../utils/uuid';\nimport { copyToClipboard } from '../OpenchannelUserMessage/utils';\nimport { LocalizationContext } from '../../lib/LocalizationContext';\nimport { checkOGIsEnalbed, createUrlTester, URL_REG } from './utils';\nimport { ClientUserMessage } from '../../index';\nimport {\n checkIsByMe,\n checkIsPending,\n checkIsFailed,\n isFineCopy,\n isFineEdit,\n isFineResend,\n isFineDelete,\n showMenuTrigger,\n} from '../../utils/openChannelUtils';\nimport { getSenderFromMessage } from '../../utils/openChannelUtils';\n\ninterface Props {\n message: ClientUserMessage;\n className?: string | Array<string>;\n disabled?: boolean;\n showEdit(bool: boolean): void;\n showRemove(bool: boolean): void;\n resendMessage(message: ClientUserMessage): void;\n chainTop?: boolean;\n chainBottom?: boolean;\n status: string;\n userId: string;\n}\n\nexport default function OpenchannelOGMessage({\n message,\n className,\n disabled,\n showEdit,\n showRemove,\n resendMessage,\n chainTop,\n status,\n userId,\n}: Props): JSX.Element {\n if (!message || message.messageType !== 'user') {\n return null;\n }\n\n const { ogMetaData } = message;\n const { defaultImage } = ogMetaData;\n\n const { stringSet } = useContext(LocalizationContext);\n const { disableUserProfile, renderUserProfile } = useContext(UserProfileContext);\n const [contextStyle, setContextStyle] = useState({});\n const messageComponentRef = useRef(null);\n const contextMenuRef = useRef(null);\n const avatarRef = useRef(null);\n\n const isUrl = createUrlTester(URL_REG);\n const isByMe = checkIsByMe(message, userId);\n const isPending = checkIsPending(status);\n const isFailed = checkIsFailed(status);\n const sender = getSenderFromMessage(message);\n\n const MemoizedMessageText = useMemo(() => () => {\n const wordClassName = 'sendbird-openchannel-og-message--word';\n const splitMessage = message.message.split(' ');\n const matchedMessage = splitMessage\n .map((word) => (\n isUrl(word)\n ? (\n <LinkLabel\n key={uuidv4()}\n className={[\n wordClassName,\n 'sendbird-openchannel-og-message--word--link'\n ]}\n src={word}\n type={LabelTypography.BODY_1}\n color={LabelColors.PRIMARY}\n >\n {word}\n </LinkLabel>\n )\n : (\n <Label\n key={uuidv4()}\n className={wordClassName}\n type={LabelTypography.BODY_1}\n color={LabelColors.ONBACKGROUND_1}\n >\n {word}\n </Label>\n )\n ));\n\n if (message.updatedAt > 0) {\n matchedMessage.push(\n <Label\n key={uuidv4()}\n className={wordClassName}\n type={LabelTypography.BODY_1}\n color={LabelColors.ONBACKGROUND_2}\n >\n {stringSet.MESSAGE_EDITED}\n </Label>,\n );\n }\n\n return matchedMessage;\n }, [message, message.updatedAt]);\n\n const openLink = () => {\n if (checkOGIsEnalbed(message)) {\n const { url } = ogMetaData;\n window.open(url);\n }\n };\n\n // place conxt menu top depending clientHeight of message component\n useEffect(() => {\n if (messageComponentRef?.current?.clientHeight > 36) {\n setContextStyle({ top: '8px ' });\n } else {\n setContextStyle({ top: '2px' });\n }\n }, [window.innerWidth]);\n\n return (\n <div\n className={[\n ...(Array.isArray(className) ? className : [className]),\n 'sendbird-openchannel-og-message',\n ].join(' ')}\n ref={messageComponentRef}\n >\n <div\n className=\"sendbird-openchannel-og-message__top\"\n >\n <div className=\"sendbird-openchannel-og-message__top__left\">\n {\n !chainTop && (\n <ContextMenu\n menuTrigger={(toggleDropdown) => (\n <Avatar\n className=\"sendbird-openchannel-og-message__top__left__avatar\"\n src={sender.profileUrl || ''}\n ref={avatarRef}\n width=\"28px\"\n height=\"28px\"\n onClick={() => {\n if (!disableUserProfile) {\n toggleDropdown();\n }\n }}\n />\n )}\n menuItems={(closeDropdown) => (\n <MenuItems\n parentRef={avatarRef}\n parentContainRef={avatarRef}\n closeDropdown={closeDropdown}\n style={{ paddingTop: 0, paddingBottom: 0 }}\n >\n {\n renderUserProfile\n ? (\n renderUserProfile({\n user: sender,\n close: closeDropdown,\n })\n )\n : (\n <UserProfile\n user={sender}\n onSuccess={closeDropdown}\n disableMessaging\n />\n )\n }\n </MenuItems>\n )}\n />\n )\n }\n </div>\n <div className=\"sendbird-openchannel-og-message__top__right\">\n {\n !chainTop && (\n <div className=\"sendbird-openchannel-og-message__top__right__title\">\n <Label\n className=\"sendbird-openchannel-og-message__top__right__title__sender-name\"\n type={LabelTypography.CAPTION_2}\n color={isByMe ? LabelColors.SECONDARY_3 : LabelColors.ONBACKGROUND_2}\n >\n {\n sender && (\n sender.friendName\n || sender.nickname\n || sender.userId\n )\n }\n </Label>\n <Label\n className=\"sendbird-openchannel-og-message__top__right__title__sent-at\"\n type={LabelTypography.CAPTION_3}\n color={LabelColors.ONBACKGROUND_3}\n >\n {\n message.createdAt && (\n format(message.createdAt, 'p')\n )\n }\n </Label>\n </div>\n )\n }\n <div className=\"sendbird-openchannel-og-message__top__right__description\">\n <Label\n className=\"sendbird-openchannel-og-message__top__right__description__message\"\n type={LabelTypography.BODY_1}\n color={LabelColors.ONBACKGROUND_1}\n >\n {MemoizedMessageText()}\n </Label>\n </div>\n </div>\n {\n <div\n className=\"sendbird-openchannel-og-message__top__context-menu\"\n ref={contextMenuRef}\n style={contextStyle}\n >\n <ContextMenu\n menuTrigger={(toggleDropdown) => (\n showMenuTrigger({ message: message, userId: userId, status: status }) && (\n <IconButton\n className=\"sendbird-openchannel-og-message__top__context-menu--icon\"\n width=\"32px\"\n height=\"32px\"\n onClick={() => {\n toggleDropdown();\n }}\n >\n <Icon\n type={IconTypes.MORE}\n fillColor={IconColors.CONTENT_INVERSE}\n width=\"24px\"\n height=\"24px\"\n />\n </IconButton>\n )\n )}\n menuItems={(closeDropdown) => (\n <MenuItems\n parentRef={contextMenuRef}\n parentContainRef={contextMenuRef}\n closeDropdown={closeDropdown}\n openLeft\n >\n {\n isFineCopy({ message, userId, status }) && (\n <MenuItem\n className=\"sendbird-openchannel-og-message__top__context-menu__copy\"\n onClick={() => {\n copyToClipboard(message.message);\n closeDropdown();\n }}\n >\n {stringSet.CONTEXT_MENU_DROPDOWN__COPY}\n </MenuItem>\n )\n }\n {\n isFineEdit({ message, userId, status }) && (\n <MenuItem\n className=\"sendbird-openchannel-og-message__top__context-menu__edit\"\n onClick={() => {\n if (disabled) {\n return;\n }\n showEdit(true);\n closeDropdown();\n }}\n >\n {stringSet.CONTEXT_MENU_DROPDOWN__EDIT}\n </MenuItem>\n )\n }\n {\n isFineResend({ message, userId, status }) && (\n <MenuItem\n className=\"sendbird-openchannel-og-message__top__context-menu__resend\"\n onClick={() => {\n resendMessage(message);\n closeDropdown();\n }}\n >\n {stringSet.CONTEXT_MENU_DROPDOWN__RESEND}\n </MenuItem>\n )\n }\n {\n isFineDelete({ message, userId, status }) && (\n <MenuItem\n className=\"sendbird-openchannel-og-message__top__context-menu__delete\"\n onClick={() => {\n if (disabled) {\n return;\n }\n showRemove(true);\n closeDropdown();\n }}\n >\n {stringSet.CONTEXT_MENU_DROPDOWN__DELETE}\n </MenuItem>\n )\n }\n </MenuItems>\n )}\n />\n </div>\n }\n </div>\n <div className=\"sendbird-openchannel-og-message__bottom\">\n <div className=\"sendbird-openchannel-og-message__bottom__og-tag\">\n {\n ogMetaData.url && (\n <Label\n className=\"sendbird-openchannel-og-message__bottom__og-tag__url\"\n type={LabelTypography.CAPTION_3}\n color={LabelColors.ONBACKGROUND_2}\n >\n {ogMetaData.url}\n </Label>\n )\n }\n {\n ogMetaData.title && (\n <LinkLabel\n className=\"sendbird-openchannel-og-message__bottom__og-tag__title\"\n src={ogMetaData.url}\n type={LabelTypography.SUBTITLE_2}\n color={LabelColors.PRIMARY}\n >\n {\n ogMetaData.title\n }\n </LinkLabel>\n )\n }\n {\n ogMetaData.description && (\n <Label\n className=\"sendbird-openchannel-og-message__bottom__og-tag__description\"\n type={LabelTypography.BODY_2}\n color={LabelColors.ONBACKGROUND_1}\n >\n {ogMetaData.description}\n </Label>\n )\n }\n {\n ogMetaData.url && (\n <div\n className=\"sendbird-openchannel-og-message__bottom__og-tag__thumbnail\"\n role=\"button\"\n onClick={openLink}\n onKeyDown={openLink}\n tabIndex={0}\n >\n {\n defaultImage && (\n <ImageRenderer\n className=\"sendbird-openchannel-og-message__bottom__og-tag__thumbnail__image\"\n url={defaultImage.url || ''}\n alt={defaultImage.alt || ''}\n height=\"189px\"\n defaultComponent={(\n <div className=\"sendbird-openchannel-og-message__bottom__og-tag__thumbnail__image--placeholder\">\n <Icon\n type={IconTypes.THUMBNAIL_NONE}\n width=\"56px\"\n height=\"56px\"\n />\n </div>\n )}\n />\n )\n }\n </div>\n )\n }\n </div>\n {\n (isPending || isFailed) && (\n <div className=\"sendbird-openchannel-og-message__top__right__tail\">\n {\n isPending && (\n <Loader\n width=\"16px\"\n height=\"16px\"\n >\n <Icon\n className=\"sendbird-openchannel-og-message__top__right__tail__pending\"\n type={IconTypes.SPINNER}\n fillColor={IconColors.PRIMARY}\n width=\"16px\"\n height=\"16px\"\n />\n </Loader>\n )\n }\n {\n isFailed && (\n <Icon\n className=\"sendbird-openchannel-og-message__top__right__tail__failed\"\n type={IconTypes.ERROR}\n width=\"16px\"\n height=\"16px\"\n />\n )\n }\n </div>\n )\n }\n </div>\n </div>\n );\n}\n","export const SUPPORTING_TYPES = {\n IMAGE: 'IMAGE',\n VIDEO: 'VIDEO',\n UNSUPPORTED: 'UNSUPPORTED',\n};\n\nconst SUPPORTED_MIMES = {\n IMAGE: [\n 'image/jpeg',\n 'image/jpg',\n 'image/png',\n 'image/gif',\n 'image/webp',\n ],\n VIDEO: [\n 'video/mpeg',\n 'video/ogg',\n 'video/webm',\n 'video/mp4',\n ],\n};\n\nexport const getSupportingFileType = (type: string): string => {\n if (SUPPORTED_MIMES.IMAGE.indexOf(type) >= 0) {\n return SUPPORTING_TYPES.IMAGE;\n }\n if (SUPPORTED_MIMES.VIDEO.indexOf(type) >= 0) {\n return SUPPORTING_TYPES.VIDEO;\n }\n return SUPPORTING_TYPES.UNSUPPORTED;\n}\n","import React, {\n useRef,\n useMemo,\n useState,\n useEffect,\n useContext,\n} from 'react';\nimport format from 'date-fns/format';\nimport './index.scss';\nimport { SUPPORTING_TYPES, getSupportingFileType } from './utils';\nimport { ClientFileMessage } from '../../index';\nimport { LocalizationContext } from '../../lib/LocalizationContext';\n\nimport Avatar from '../Avatar';\nimport ContextMenu, { MenuItems, MenuItem } from '../ContextMenu';\nimport Icon, { IconTypes, IconColors } from '../Icon';\nimport IconButton from '../IconButton';\nimport ImageRenderer from '../ImageRenderer';\nimport Label, { LabelTypography, LabelColors } from '../Label';\nimport Loader from '../Loader';\nimport UserProfile from '../UserProfile';\nimport { UserProfileContext } from '../../lib/UserProfileContext';\nimport {\n checkIsByMe,\n checkIsSent,\n checkIsPending,\n checkIsFailed,\n isFineResend,\n isFineDelete,\n showMenuTrigger,\n} from '../../utils/openChannelUtils';\nimport { getSenderFromMessage } from '../../utils/openChannelUtils';\n\ninterface Props {\n className?: string | Array<string>;\n message: ClientFileMessage;\n disabled: boolean;\n userId: string;\n status: string;\n chainTop: boolean;\n chainBottom: boolean;\n onClick(bool: boolean): void,\n showRemove(bool: boolean): void,\n resendMessage(message: ClientFileMessage): void;\n}\n\nexport default function OpenchannelThumbnailMessage({\n className,\n message,\n disabled,\n userId,\n status,\n chainTop,\n onClick,\n showRemove,\n resendMessage,\n}: Props): JSX.Element {\n const {\n type,\n url,\n localUrl,\n thumbnails,\n } = message;\n const thumbnailUrl = (thumbnails && thumbnails.length > 0 && thumbnails[0].url) || null;\n const { stringSet } = useContext(LocalizationContext);\n const { disableUserProfile, renderUserProfile } = useContext(UserProfileContext);\n const [messageWidth, setMessageWidth] = useState(360);\n const messageRef = useRef(null);\n const contextMenuRef = useRef(null);\n const avatarRef = useRef(null);\n\n const memorizedThumbnailPlaceHolder = useMemo(() => (type) => ({ style }) => ( // eslint-disable-line\n <div style={style}>\n <Icon\n type={type}\n fillColor={IconColors.ON_BACKGROUND_2}\n width=\"56px\"\n height=\"56px\"\n />\n </div>\n ), []);\n\n const isByMe = checkIsByMe(message, userId);\n const isMessageSent = checkIsSent(status);\n const isPending = checkIsPending(status);\n const isFailed = checkIsFailed(status);\n const sender = getSenderFromMessage(message);\n\n useEffect(() => {\n const thumbnailWidth = messageRef?.current?.clientWidth - 80;\n setMessageWidth(thumbnailWidth > 360 ? 360 : thumbnailWidth);\n }, []);\n\n return (\n <div\n className={[\n ...(Array.isArray(className) ? className : [className]),\n 'sendbird-openchannel-thumbnail-message',\n ].join(' ')}\n ref={messageRef}\n >\n <div className=\"sendbird-openchannel-thumbnail-message__left\">\n {\n !chainTop && (\n <ContextMenu\n menuTrigger={(toggleDropdown) => (\n <Avatar\n className=\"sendbird-openchannel-thumbnail-message__left__avatar\"\n src={sender.profileUrl || ''}\n ref={avatarRef}\n width=\"28px\"\n height=\"28px\"\n onClick={() => {\n if (!disableUserProfile) {\n toggleDropdown();\n }\n }}\n />\n )}\n menuItems={(closeDropdown) => (\n <MenuItems\n parentRef={avatarRef}\n parentContainRef={avatarRef}\n closeDropdown={closeDropdown}\n style={{ paddingTop: 0, paddingBottom: 0 }}\n >\n {\n renderUserProfile\n ? (\n renderUserProfile({\n user: sender,\n close: closeDropdown,\n })\n )\n : (\n <UserProfile\n user={sender}\n onSuccess={closeDropdown}\n disableMessaging\n />\n )\n }\n </MenuItems>\n )}\n />\n )\n }\n </div>\n <div className=\"sendbird-openchannel-thumbnail-message__right\">\n {\n !chainTop && (\n <div className=\"sendbird-openchannel-thumbnail-message__right__title\">\n <Label\n className=\"sendbird-openchannel-thumbnail-message__right__title__sender-name\"\n type={LabelTypography.CAPTION_2}\n color={isByMe ? LabelColors.SECONDARY_3 : LabelColors.ONBACKGROUND_2}\n >\n {\n sender && (\n sender.friendName\n || sender.nickname\n || sender.userId\n )\n }\n </Label>\n <Label\n className=\"sendbird-openchannel-thumbnail-message__right__title__sent-at\"\n type={LabelTypography.CAPTION_3}\n color={LabelColors.ONBACKGROUND_3}\n >\n {\n message.createdAt && (\n format(message.createdAt, 'p')\n )\n }\n </Label>\n </div>\n )\n }\n <div className=\"sendbird-openchannel-thumbnail-message__right__body\">\n <div\n className=\"sendbird-openchannel-thumbnail-message__right__body__wrap\"\n role=\"button\"\n onClick={() => {\n if (isMessageSent) {\n onClick(true);\n }\n }}\n onKeyDown={() => {\n if (isMessageSent) {\n onClick(true);\n }\n }}\n tabIndex={0}\n >\n <div className=\"sendbird-openchannel-thumbnail-message__right__body__wrap__overlay\" />\n {\n {\n [SUPPORTING_TYPES.VIDEO]: (\n (url || localUrl)\n ? (\n <div className=\"sendbird-openchannel-thumbnail-message__right__body__wrap__video\" >\n {\n (thumbnailUrl)\n ? (\n <ImageRenderer\n className=\"sendbird-openchannel-thumbnail-message__right__body__wrap__video\"\n url={thumbnailUrl}\n width={messageWidth}\n height=\"270px\"\n alt=\"image\"\n placeHolder={memorizedThumbnailPlaceHolder(IconTypes.PLAY)}\n />\n )\n : (\n <video className=\"sendbird-openchannel-thumbnail-message__right__body__wrap__video__video\">\n <source src={url || localUrl} type={type} />\n </video>\n )\n }\n <Icon\n className=\"sendbird-openchannel-thumbnail-message__right__body__wrap__video__icon\"\n type={IconTypes.PLAY}\n fillColor={IconColors.ON_BACKGROUND_2}\n width=\"56px\"\n height=\"56px\"\n />\n </div>\n )\n : (\n <Icon\n className=\"sendbird-openchannel-thumbnail-message__right__body__wrap__video--icon\"\n type={IconTypes.PHOTO}\n fillColor={IconColors.ON_BACKGROUND_2}\n width=\"56px\"\n height=\"56px\"\n />\n )\n ),\n [SUPPORTING_TYPES.IMAGE]: (\n (url || localUrl)\n ? (\n <ImageRenderer\n className=\"sendbird-openchannel-thumbnail-message__right__body__wrap__image\"\n url={thumbnailUrl || url || localUrl}\n alt=\"image\"\n width={messageWidth}\n height=\"270px\"\n placeHolder={memorizedThumbnailPlaceHolder(IconTypes.PHOTO)}\n />\n )\n : (\n <Icon\n className=\"sendbird-openchannel-thumbnail-message__right__body__wrap__image--icon\"\n type={IconTypes.PHOTO}\n fillColor={IconColors.ON_BACKGROUND_2}\n width=\"56px\"\n height=\"56px\"\n />\n )\n ),\n [SUPPORTING_TYPES.UNSUPPORTED]: (\n <Icon\n className=\"sendbird-openchannel-thumbnail-message__right__body__wrap__unknown\"\n type={IconTypes.PHOTO}\n fillColor={IconColors.ON_BACKGROUND_2}\n width=\"56px\"\n height=\"56px\"\n />\n ),\n }[getSupportingFileType(type)]\n }\n </div>\n </div>\n {\n (isPending || isFailed) && (\n <div className=\"sendbird-openchannel-thumbnail-message__right__tail\">\n {\n isPending && (\n <Loader\n width=\"16px\"\n height=\"16px\"\n >\n <Icon\n className=\"sendbird-openchannel-thumbnail-message__right__tail__pending\"\n type={IconTypes.SPINNER}\n fillColor={IconColors.PRIMARY}\n width=\"16px\"\n height=\"16px\"\n />\n </Loader>\n )\n }\n {\n isFailed && (\n <Icon\n className=\"sendbird-openchannel-thumbnail-message__right__tail__failed\"\n type={IconTypes.ERROR}\n width=\"16px\"\n height=\"16px\"\n />\n )\n }\n </div>\n )\n }\n </div>\n <div\n className=\"sendbird-openchannel-thumbnail-message__context-menu\"\n ref={contextMenuRef}\n >\n <ContextMenu\n menuTrigger={(toggleDropdown) => (\n showMenuTrigger({ message, userId, status }) && (\n <IconButton\n className=\"sendbird-openchannel-thumbnail-message__context-menu--icon\"\n width=\"32px\"\n height=\"32px\"\n onClick={toggleDropdown}\n >\n <Icon\n type={IconTypes.MORE}\n fillColor={IconColors.CONTENT_INVERSE}\n width=\"24px\"\n height=\"24px\"\n />\n </IconButton>\n )\n )}\n menuItems={(closeDropdown) => (\n <MenuItems\n parentRef={contextMenuRef}\n parentContainRef={contextMenuRef}\n closeDropdown={closeDropdown}\n openLeft\n >\n {\n isFineResend({ message, userId, status }) && (\n <MenuItem\n onClick={() => {\n resendMessage(message);\n closeDropdown();\n }}\n >\n {stringSet.CONTEXT_MENU_DROPDOWN__RESEND}\n </MenuItem>\n )\n }\n {\n isFineDelete({ message, userId, status }) && (\n <MenuItem\n onClick={() => {\n if (disabled) {\n return;\n }\n showRemove(true);\n closeDropdown();\n }}\n >\n {stringSet.CONTEXT_MENU_DROPDOWN__DELETE}\n </MenuItem>\n )\n }\n </MenuItems>\n )}\n />\n </div>\n </div>\n );\n}\n","import { IconTypes } from '../Icon';\n\nexport const checkFileType = (fileUrl: string): string => {\n const audioFile = /(\\.mp3)$/i;\n const gifFile = /(\\.gif)$/i;\n if (audioFile.test(fileUrl)) {\n return IconTypes.FILE_AUDIO;\n }\n if (gifFile.test(fileUrl)) {\n return IconTypes.GIF\n }\n return IconTypes.FILE_DOCUMENT;\n}\n\nexport const truncate = (fullStr:string, strLen: number): string => {\n if (fullStr === null || fullStr === undefined) return '';\n if (fullStr.length <= strLen) return fullStr;\n const separator = '...';\n const sepLen = separator.length;\n const charsToShow = strLen - sepLen;\n const frontChars = Math.ceil(charsToShow / 2);\n const backChars = Math.floor(charsToShow / 2);\n return fullStr.substr(0, frontChars) + separator + fullStr.substr(fullStr.length - backChars);\n};\n","import React, { useContext, useRef } from 'react';\nimport format from 'date-fns/format';\nimport './index.scss';\n\nimport Avatar from '../Avatar';\nimport ContextMenu, { MenuItems, MenuItem } from '../ContextMenu';\nimport Label, { LabelTypography, LabelColors } from '../Label';\nimport Loader from '../Loader';\nimport Icon, { IconTypes, IconColors } from '../Icon';\nimport IconButton from '../IconButton';\nimport TextButton from '../TextButton';\nimport UserProfile from '../UserProfile';\nimport { UserProfileContext } from '../../lib/UserProfileContext';\n\nimport { LocalizationContext } from '../../lib/LocalizationContext';\nimport { checkFileType, truncate } from './utils';\nimport { ClientFileMessage } from '../../index';\nimport {\n checkIsByMe,\n checkIsPending,\n checkIsFailed,\n isFineDelete,\n isFineResend,\n showMenuTrigger,\n} from '../../utils/openChannelUtils';\nimport { getSenderFromMessage } from '../../utils/openChannelUtils';\n\ninterface Props {\n className?: string | Array<string>;\n message: ClientFileMessage;\n userId: string;\n disabled?: boolean;\n chainTop?: boolean;\n chainBottom?: boolean;\n status: string;\n showRemove(bool: boolean): void;\n resendMessage(message: ClientFileMessage): void;\n}\n\nexport default function OpenchannelFileMessage({\n className,\n message,\n userId,\n disabled,\n chainTop,\n status,\n showRemove,\n resendMessage,\n}: Props): JSX.Element {\n const contextMenuRef = useRef(null);\n const avatarRef = useRef(null);\n const { stringSet } = useContext(LocalizationContext);\n const { disableUserProfile, renderUserProfile } = useContext(UserProfileContext);\n\n const openFileUrl = () => { window.open(message.url); };\n\n const isByMe = checkIsByMe(message, userId);\n const isPending = checkIsPending(status);\n const isFailed = checkIsFailed(status);\n const sender = getSenderFromMessage(message);\n\n return (\n <div\n className={[\n ...(Array.isArray(className) ? className : [className]),\n 'sendbird-openchannel-file-message',\n ].join(' ')}\n >\n <div className=\"sendbird-openchannel-file-message__left\">\n {\n !chainTop && (\n <ContextMenu\n menuTrigger={(toggleDropdown) => (\n <Avatar\n className=\"sendbird-openchannel-file-message__left__avatar\"\n src={sender.profileUrl || ''}\n ref={avatarRef}\n width=\"28px\"\n height=\"28px\"\n onClick={() => {\n if (!disableUserProfile) {\n toggleDropdown();\n }\n }}\n />\n )}\n menuItems={(closeDropdown) => (\n <MenuItems\n parentRef={avatarRef}\n parentContainRef={avatarRef}\n closeDropdown={closeDropdown}\n style={{ paddingTop: 0, paddingBottom: 0 }}\n >\n {\n renderUserProfile\n ? (\n renderUserProfile({\n user: sender,\n close: closeDropdown,\n })\n )\n : (\n <UserProfile\n user={sender}\n onSuccess={closeDropdown}\n disableMessaging\n />\n )\n }\n </MenuItems>\n )}\n />\n )\n }\n </div>\n <div className=\"sendbird-openchannel-file-message__right\">\n {\n !chainTop && (\n <div className=\"sendbird-openchannel-file-message__right__title\">\n <Label\n className=\"sendbird-openchannel-file-message__right__title__sender-name\"\n type={LabelTypography.CAPTION_2}\n color={isByMe ? LabelColors.SECONDARY_3 : LabelColors.ONBACKGROUND_2}\n >\n {\n sender && (\n sender.friendName\n || sender.nickname\n || sender.userId\n )\n }\n </Label>\n <Label\n className=\"sendbird-openchannel-file-message__right__title__sent-at\"\n type={LabelTypography.CAPTION_3}\n color={LabelColors.ONBACKGROUND_3}\n >\n {\n message.createdAt && (\n format(message.createdAt, 'p')\n )\n }\n </Label>\n </div>\n )\n }\n <div className=\"sendbird-openchannel-file-message__right__body\">\n {\n checkFileType(message.url) && (\n <Icon\n className=\"sendbird-openchannel-file-message__right__body__icon\"\n type={checkFileType(message.url)}\n fillColor={IconColors.PRIMARY}\n width=\"48px\"\n height=\"48px\"\n />\n )\n }\n <TextButton\n className=\"sendbird-openchannel-file-message__right__body__file-name\"\n onClick={openFileUrl}\n >\n <Label\n type={LabelTypography.BODY_1}\n color={LabelColors.ONBACKGROUND_1}\n >\n {truncate(message.name || message.url, 40)}\n </Label>\n </TextButton>\n </div>\n {\n (isPending || isFailed) && (\n <div className=\"sendbird-openchannel-file-message__right__tail\">\n {\n isPending && (\n <Loader\n width=\"16px\"\n height=\"16px\"\n >\n <Icon\n className=\"sendbird-openchannel-file-message__right__tail__pending\"\n type={IconTypes.SPINNER}\n fillColor={IconColors.PRIMARY}\n width=\"16px\"\n height=\"16px\"\n />\n </Loader>\n )\n }\n {\n isFailed && (\n <Icon\n className=\"sendbird-openchannel-file-message__right__tail__failed\"\n type={IconTypes.ERROR}\n width=\"16px\"\n height=\"16px\"\n />\n )\n }\n </div>\n )\n }\n </div>\n <div\n className=\"sendbird-openchannel-file-message__context-menu\"\n ref={contextMenuRef}\n >\n {\n <ContextMenu\n menuTrigger={(toggleDropdown) => (\n showMenuTrigger({ message, userId, status }) && (\n <IconButton\n className=\"sendbird-openchannel-file-message__context-menu__icon\"\n width=\"32px\"\n height=\"32px\"\n onClick={toggleDropdown}\n >\n <Icon\n type={IconTypes.MORE}\n width=\"24px\"\n height=\"24px\"\n />\n </IconButton>\n )\n )}\n menuItems={(closeDropdown) => (\n <MenuItems\n parentRef={contextMenuRef}\n parentContainRef={contextMenuRef}\n closeDropdown={closeDropdown}\n openLeft\n >\n {\n isFineResend({ message, userId, status }) && (\n <MenuItem\n onClick={() => {\n if (disabled) { return; }\n resendMessage(message);\n closeDropdown();\n }}\n >\n {stringSet.CONTEXT_MENU_DROPDOWN__RESEND}\n </MenuItem>\n )\n }\n {\n isFineDelete({ message, userId, status }) && (\n <MenuItem\n onClick={() => {\n if (disabled) { return; }\n showRemove(true);\n closeDropdown();\n }}\n >\n {stringSet.CONTEXT_MENU_DROPDOWN__DELETE}\n </MenuItem>\n )\n }\n </MenuItems>\n )}\n />\n }\n </div>\n </div>\n );\n}\n","import React, { useContext } from 'react'\nimport { ClientFileMessage, ClientUserMessage } from '../../..'\nimport Modal from '../../../ui/Modal';\nimport { LocalizationContext } from '../../../lib/LocalizationContext';\n\ninterface Props {\n onCloseModal(): void;\n onDeleteMessage(message: ClientUserMessage | ClientFileMessage, callback?: () => void): void;\n}\n\nexport default function RemoveMessageModal({\n onCloseModal,\n onDeleteMessage,\n}: Props): JSX.Element {\n const { stringSet } = useContext(LocalizationContext);\n\n return (\n <Modal\n onCancel={onCloseModal}\n onSubmit={onDeleteMessage}\n submitText=\"Delete\"\n titleText={stringSet.MODAL__DELETE_MESSAGE__TITLE}\n />\n );\n}\n","import { EveryMessage } from '../../..';\nimport { isImage, isVideo } from '../../../ui/FileViewer/types';\n\nexport const MessageTypes = {\n ADMIN: 'ADMIN',\n USER: 'USER',\n FILE: 'FILE',\n THUMBNAIL: 'THUMBNAIL',\n OG: 'OG',\n UNKNOWN: 'UNKNOWN',\n};\n\nexport const SendingMessageStatus = {\n NONE: 'none',\n SUCCEEDED: 'succeeded',\n FAILED: 'failed',\n PENDING: 'pending',\n};\n\nexport const getMessageType = (message: EveryMessage): string => {\n if ((message.isUserMessage && message.isUserMessage()) || message.messageType === 'user') {\n return (message.ogMetaData)\n ? MessageTypes.OG\n : MessageTypes.USER;\n }\n if (message.isAdminMessage && message.isAdminMessage()) {\n return MessageTypes.ADMIN;\n }\n if (message.messageType === 'file') {\n return (isImage(message.type) || isVideo(message.type))\n ? MessageTypes.THUMBNAIL\n : MessageTypes.FILE;\n }\n return MessageTypes.UNKNOWN;\n};\n\nexport default {\n MessageTypes,\n SendingMessageStatus,\n getMessageType,\n};\n","import React, {\n useState,\n useRef,\n ReactElement,\n useMemo,\n} from 'react';\n\nimport format from 'date-fns/format';\nimport * as types from '../../../index';\n\nimport OpenChannelUserMessage from '../../../ui/OpenchannelUserMessage';\nimport OpenChannelAdminMessage from '../../../ui/OpenChannelAdminMessage';\nimport OpenChannelOGMessage from '../../../ui/OpenchannelOGMessage';\nimport OpenChannelThumbnailMessage from '../../../ui/OpenchannelThumbnailMessage';\nimport OpenChannelFileMessage from '../../../ui/OpenchannelFileMessage';\n// import UnknownMessage from '../../../ui/UnknownMessage';\n\nimport DateSeparator from '../../../ui/DateSeparator';\nimport Label, { LabelTypography, LabelColors } from '../../../ui/Label';\nimport MessageInput from '../../../ui/MessageInput';\nimport FileViewer from '../../../ui/FileViewer';\n\nimport RemoveMessageModal from './RemoveMessageModal';\nimport {\n MessageTypes,\n SendingMessageStatus,\n getMessageType,\n} from './types';\nimport { OpenChannel } from 'sendbird';\n\ninterface Props {\n message: types.EveryMessage;\n userId: string;\n disabled: boolean;\n editDisabled: boolean;\n hasSeperator: boolean;\n channel: OpenChannel;\n renderCustomMessage?: types.RenderCustomMessage,\n deleteMessage(message: types.ClientUserMessage | types.ClientFileMessage, callback?: () => void): void;\n updateMessage(messageId: number, text: string, callback?: () => void): void;\n resendMessage(failedMessage: types.ClientUserMessage | types.ClientFileMessage): void;\n status?: string;\n chainTop: boolean;\n chainBottom: boolean;\n}\n\nexport default function MessageHoc({\n message,\n userId,\n disabled,\n editDisabled,\n hasSeperator,\n channel,\n renderCustomMessage,\n deleteMessage,\n updateMessage,\n resendMessage,\n status,\n chainTop,\n chainBottom,\n}: Props): ReactElement {\n let sender: SendBird.User = null;\n if (message.messageType !== 'admin') {\n sender = message.sender;\n }\n\n const RenderedMessage = useMemo(() => {\n if (renderCustomMessage) {\n return renderCustomMessage(message, channel, chainTop, chainBottom);\n }\n return null;\n }, [message, renderCustomMessage]);\n\n const [showEdit, setShowEdit] = useState(false);\n const [showRemove, setShowRemove] = useState(false);\n const [showFileViewer, setShowFileViewer] = useState(false);\n const editMessageInputRef = useRef(null);\n\n let isByMe = false;\n\n if (sender && message.messageType !== 'admin') {\n // pending and failed messages are by me\n isByMe = (userId === sender.userId)\n || (message.requestState === SendingMessageStatus.PENDING)\n || (message.requestState === SendingMessageStatus.FAILED);\n }\n\n if(RenderedMessage) {\n return (\n <div className=\"sendbird-msg-hoc sendbird-msg--scroll-ref\">\n <RenderedMessage message={message} />\n </div>\n );\n }\n\n if (message.messageType === 'user' && showEdit) {\n return (\n <MessageInput\n isEdit\n disabled={editDisabled}\n ref={editMessageInputRef}\n name={message.messageId}\n onSendMessage={updateMessage}\n onCancelEdit={() => { setShowEdit(false); }}\n value={message.message}\n />\n );\n }\n\n return (\n <div className=\"sendbird-msg-hoc sendbird-msg--scroll-ref\">\n {/* date-seperator */}\n {\n hasSeperator && (\n <DateSeparator>\n <Label type={LabelTypography.CAPTION_2} color={LabelColors.ONBACKGROUND_2}>\n {format(message.createdAt, 'MMMM dd, yyyy')}\n </Label>\n </DateSeparator>\n )\n }\n {/* Message */}\n {\n {\n [MessageTypes.ADMIN]: (() => {\n if (message.messageType === 'admin') {\n return (\n <OpenChannelAdminMessage message={message} />\n )\n }\n })(),\n [MessageTypes.FILE]: (() => {\n if (message.messageType === 'file') {\n return (\n <OpenChannelFileMessage\n message={message}\n disabled={disabled}\n userId={userId}\n showRemove={setShowRemove}\n resendMessage={resendMessage}\n status={status}\n chainTop={chainTop}\n chainBottom={chainBottom}\n />\n );\n }\n return;\n })(),\n [MessageTypes.OG]: (() => {\n if (message.messageType === 'user') {\n return (\n <OpenChannelOGMessage\n message={message}\n status={status}\n userId={userId}\n showEdit={setShowEdit}\n disabled={disabled}\n showRemove={setShowRemove}\n resendMessage={resendMessage}\n chainTop={chainTop}\n chainBottom={chainBottom}\n />\n );\n }\n return;\n })(),\n [MessageTypes.THUMBNAIL]: (() => {\n if (message.messageType === 'file') {\n return (\n <OpenChannelThumbnailMessage\n message={message}\n disabled={disabled}\n userId={userId}\n showRemove={setShowRemove}\n resendMessage={resendMessage}\n onClick={setShowFileViewer}\n status={status}\n chainTop={chainTop}\n chainBottom={chainBottom}\n />\n );\n }\n return;\n })(),\n [MessageTypes.USER]: (() => {\n if (message.messageType === 'user') {\n return (\n <OpenChannelUserMessage\n message={message}\n userId={userId}\n disabled={disabled}\n showEdit={setShowEdit}\n showRemove={setShowRemove}\n resendMessage={resendMessage}\n status={status}\n chainTop={chainTop}\n chainBottom={chainBottom}\n />\n );\n }\n return;\n })(),\n [MessageTypes.UNKNOWN]: (() => {\n return;\n // return (\n // <OpenChannelUnknownMessage message={message} />\n // );\n })(),\n }[getMessageType(message)]\n }\n {/* Modal */}\n {\n showRemove && (\n <RemoveMessageModal\n onCloseModal={() => setShowRemove(false)}\n onDeleteMessage={() => {\n if (message.messageType !== 'admin') {\n deleteMessage(message);\n }\n }}\n />\n )\n }\n {\n (showFileViewer && message.messageType === 'file') && (\n <FileViewer\n onClose={() => setShowFileViewer(false)}\n message={message}\n onDelete={() => deleteMessage(message)}\n isByMe={isByMe}\n />\n )\n }\n {/* {\n !((message.isFileMessage && message.isFileMessage()) || message.messageType === 'file')\n && !(message.isAdminMessage && message.isAdminMessage())\n && !(((message.isUserMessage && message.isUserMessage()) || message.messageType === 'user'))\n && !(showFileViewer)\n && (\n <UnknownMessage\n message={message}\n status={status}\n isByMe={isByMe}\n showRemove={setShowRemove}\n chainTop={chainTop}\n chainBottom={chainBottom}\n />\n )\n } */}\n </div>\n );\n}\n","import React, { ReactElement, useRef, useState, useMemo } from 'react';\nimport isSameDay from 'date-fns/isSameDay';\nimport {\n ClientFileMessage,\n ClientUserMessage,\n EveryMessage,\n RenderCustomMessage,\n} from '../../../index';\nimport MessageHoc from './MessageHOC';\nimport Icon, { IconTypes, IconColors } from '../../../ui/Icon';\n\nimport PlaceHolder, { PlaceHolderTypes } from '../../../ui/PlaceHolder';\nimport './openchannel-conversation-scroll.scss';\nimport { compareMessagesForGrouping } from '../utils';\n\ninterface Props {\n openchannel: SendBird.OpenChannel;\n user: SendBird.User;\n allMessages: Array<EveryMessage>;\n useMessageGrouping: boolean;\n isOnline: boolean;\n hasMore: boolean;\n renderCustomMessage?: RenderCustomMessage;\n onScroll(callback?: () => void): void;\n updateMessage(messageId: number, text: string, callback?: () => void): void;\n deleteMessage(message: ClientUserMessage | ClientFileMessage, callback?: () => void): void;\n resendMessage(failedMessage: ClientUserMessage | ClientFileMessage): void;\n}\n\nfunction OpenchannelConversationScroll(\n {\n useMessageGrouping = true,\n openchannel,\n user,\n allMessages,\n isOnline = true,\n hasMore,\n onScroll,\n renderCustomMessage,\n updateMessage,\n deleteMessage,\n resendMessage,\n }: Props,\n ref: React.RefObject<HTMLDivElement>,\n): ReactElement {\n const scrollRef = ref || useRef(null);\n const [showScrollDownButton, setShowScrollDownButton] = useState(false);\n\n const handleOnScroll = (e) => {\n const element = e.target;\n const {\n scrollTop,\n scrollHeight,\n clientHeight,\n } = element;\n if (\n (scrollHeight > scrollTop + clientHeight)\n && (window.navigator.userAgent.indexOf('MSIE ') < 0) // don't show button in IE\n ) {\n setShowScrollDownButton(true);\n } else {\n setShowScrollDownButton(false);\n }\n\n if (!hasMore) {\n return;\n }\n if (scrollTop === 0) {\n const nodes = scrollRef.current.querySelectorAll('.sendbird-msg--scroll-ref');\n const first = nodes && nodes[0];\n onScroll(() => {\n try {\n first.scrollIntoView();\n } catch (error) { }\n });\n }\n };\n\n const scrollToBottom = () => {\n if (scrollRef && scrollRef.current) {\n scrollRef.current.scrollTo(0, scrollRef.current.scrollHeight);\n setShowScrollDownButton(false);\n }\n };\n\n const hasMessage = useMemo(() => {\n return allMessages.length > 0;\n }, [allMessages.length]);\n\n return (\n <div\n className=\"sendbird-openchannel-conversation-scroll\"\n onScroll={handleOnScroll}\n ref={scrollRef}\n >\n <div className=\"sendbird-openchannel-conversation-scroll__container\">\n <div className=\"sendbird-openchannel-conversation-scroll__container__padding\" />\n <div className={`sendbird-openchannel-conversation-scroll__container__item-container${hasMessage ? '' : '--no-messages'}`}>\n {\n hasMessage\n ? (\n allMessages.map((message, index) => {\n let status: string;\n\n if (message.messageType !== 'admin') {\n status = message.sendingStatus;\n }\n\n const previousMessage = allMessages[index - 1];\n const nextMessage = allMessages[index - 1];\n\n const previousMessageCreatedAt = previousMessage && previousMessage.createdAt;\n const currentCreatedAt = message.createdAt;\n // https://stackoverflow.com/a/41855608\n const hasSeperator = !(previousMessageCreatedAt && (\n isSameDay(currentCreatedAt, previousMessageCreatedAt)\n ));\n\n const [chainTop, chainBottom] = useMessageGrouping\n ? compareMessagesForGrouping(previousMessage, message, nextMessage)\n : [false, false];\n return (\n <MessageHoc\n renderCustomMessage={renderCustomMessage}\n channel={openchannel}\n key={message.messageId}\n message={message}\n status={status}\n userId={user.userId}\n disabled={!isOnline}\n editDisabled={openchannel.isFrozen}\n hasSeperator={hasSeperator}\n chainTop={chainTop}\n chainBottom={chainBottom}\n deleteMessage={deleteMessage}\n updateMessage={updateMessage}\n resendMessage={resendMessage}\n />\n )\n })\n )\n : (\n <PlaceHolder\n className=\"sendbird-openchannel-conversation-scroll__container__place-holder\"\n type={PlaceHolderTypes.NO_MESSAGES}\n />\n )\n }\n </div>\n {\n showScrollDownButton && (\n <div\n className=\"sendbird-openchannel-conversation-scroll__container__scroll-bottom-button\"\n onClick={scrollToBottom}\n onKeyDown={scrollToBottom}\n tabIndex={0}\n role=\"button\"\n >\n <Icon\n width=\"24px\"\n height=\"24px\"\n type={IconTypes.CHEVRON_DOWN}\n fillColor={IconColors.CONTENT}\n />\n </div>\n )\n }\n </div>\n </div>\n );\n}\n\nexport default React.forwardRef(OpenchannelConversationScroll);\n","export const SET_CURRENT_CHANNEL = 'SET_CURRENT_CHANNEL';\nexport const SET_CHANNEL_INVALID = 'SET_CHANNEL_INVALID';\nexport const RESET_MESSAGES = 'RESET_MESSAGES';\nexport const GET_PREV_MESSAGES_START = 'GET_PREV_MESSAGES_START';\nexport const GET_PREV_MESSAGES_SUCESS = 'GET_PREV_MESSAGES_SUCESS';\nexport const GET_PREV_MESSAGES_FAIL = 'GET_PREV_MESSAGES_FAIL';\nexport const SENDING_MESSAGE_FAILED = 'SENDING_MESSAGE_FAILED';\nexport const SENDING_MESSAGE_SUCCEEDED = 'SENDING_MESSAGE_SUCCEEDED';\nexport const SENDING_MESSAGE_START = 'SENDING_MESSAGE_START';\nexport const RESENDING_MESSAGE_START = 'RESENDING_MESSAGE_START';\nexport const FETCH_PARTICIPANT_LIST = 'FETCH_PARTICIPANT_LIST';\nexport const FETCH_BANNED_USER_LIST = 'FETCH_BANNED_USER_LIST';\nexport const FETCH_MUTED_USER_LIST= 'FETCH_MUTED_USER_LIST';\n\n// event handlers\nexport const ON_MESSAGE_RECEIVED = 'ON_MESSAGE_RECEIVED';\nexport const ON_MESSAGE_UPDATED = 'ON_MESSAGE_UPDATED';\nexport const ON_MESSAGE_DELETED = 'ON_MESSAGE_DELETED';\nexport const ON_MESSAGE_DELETED_BY_REQ_ID = 'ON_MESSAGE_DELETED_BY_REQ_ID';\nexport const ON_OPERATOR_UPDATED = 'ON_OPERATOR_UPDATED';\nexport const ON_USER_ENTERED = 'ON_USER_ENTERED';\nexport const ON_USER_EXITED = 'ON_USER_EXITED';\nexport const ON_USER_MUTED = 'ON_USER_MUTED';\nexport const ON_USER_UNMUTED = 'ON_USER_UNMUTED';\nexport const ON_USER_BANNED = 'ON_USER_BANNED';\nexport const ON_USER_UNBANNED = 'ON_USER_UNBANNED';\nexport const ON_CHANNEL_FROZEN = 'ON_CHANNEL_FROZEN';\nexport const ON_CHANNEL_UNFROZEN = 'ON_CHANNEL_UNFROZEN';\nexport const ON_CHANNEL_CHANGED = 'ON_CHANNEL_CHANGED';\nexport const ON_META_DATA_CREATED = 'ON_META_DATA_CREATED';\nexport const ON_META_DATA_UPDATED = 'ON_META_DATA_UPDATED';\nexport const ON_META_DATA_DELETED = 'ON_META_DATA_DELETED';\nexport const ON_META_COUNTERS_CREATED = 'ON_META_COUNTERS_CREATED';\nexport const ON_META_COUNTERS_UPDATED = 'ON_META_COUNTERS_UPDATED';\nexport const ON_META_COUNTERS_DELETED = 'ON_META_COUNTERS_DELETED';\nexport const ON_MENTION_RECEIVED = 'ON_MENTION_RECEIVED';\n","import { State as initialStateInterface } from './initialState';\nimport * as actionTypes from './actionTypes';\n\nimport compareIds from '../../../utils/compareIds.js';\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n// @ts-ignore: Unreachable code error\ninterface ActionInterface {\n type: string;\n payload?: any;\n}\n\nexport default function reducer(\n state: initialStateInterface,\n action: ActionInterface,\n): initialStateInterface {\n switch (action.type) {\n case actionTypes.RESET_MESSAGES: {\n return {\n ...state,\n allMessages: [],\n };\n }\n\n case actionTypes.SET_CURRENT_CHANNEL: {\n const gottenChannel = action.payload;\n const operators = gottenChannel.operators;\n if (\n !state.isInvalid\n && state.currentOpenChannel\n && state.currentOpenChannel.url\n && (state.currentOpenChannel.url === gottenChannel.url)\n ) {\n return state;\n }\n return {\n ...state,\n currentOpenChannel: gottenChannel,\n isInvalid: false,\n operators: operators,\n participants: operators,\n bannedParticipantIds: [],\n mutedParticipantIds: [],\n };\n }\n case actionTypes.SET_CHANNEL_INVALID: {\n return {\n ...state,\n isInvalid: true,\n };\n }\n case actionTypes.GET_PREV_MESSAGES_START: {\n return {\n ...state,\n loading: true,\n };\n }\n case actionTypes.GET_PREV_MESSAGES_SUCESS:\n case actionTypes.GET_PREV_MESSAGES_FAIL: {\n const isFailed = (action.type === actionTypes.GET_PREV_MESSAGES_FAIL);\n const {\n currentOpenChannel = {},\n messages = [],\n hasMore,\n lastMessageTimestamp,\n } = action.payload;\n const actionChannelUrl = currentOpenChannel.url;\n const receivedMessages = isFailed ? [] : messages;\n const _hasMore = isFailed ? false : hasMore;\n const _lastMessageTimestamp = isFailed ? 0 : lastMessageTimestamp;\n\n const stateChannel = state.currentOpenChannel;\n const stateChannelUrl = stateChannel.url;\n\n if (actionChannelUrl !== stateChannelUrl) {\n return state;\n }\n\n const filteredAllMessages = state.allMessages.filter((message) => (\n !(receivedMessages.find(({ messageId }) => compareIds(messageId, message.messageId)))\n ));\n return {\n ...state,\n loading: false,\n initialized: true,\n hasMore: _hasMore,\n lastMessageTimestamp: _lastMessageTimestamp,\n allMessages: [\n ...receivedMessages,\n ...filteredAllMessages,\n ],\n };\n }\n case actionTypes.SENDING_MESSAGE_START: {\n const {\n message,\n channel,\n } = action.payload;\n if (channel.url !== state.currentOpenChannel.url) {\n return state;\n }\n return {\n ...state,\n allMessages: [\n ...state.allMessages,\n { ...message },\n ],\n };\n }\n case actionTypes.SENDING_MESSAGE_SUCCEEDED: {\n const sentMessage = action.payload;\n const newMessages = state.allMessages.map((m) => (\n compareIds(m.reqId, sentMessage.reqId) ? sentMessage : m\n ));\n return {\n ...state,\n allMessages: newMessages,\n };\n }\n case actionTypes.SENDING_MESSAGE_FAILED: {\n const sentMessage = action.payload;\n return {\n ...state,\n allMessages: state.allMessages.map((m) => (\n compareIds(m.reqId, sentMessage.reqId) ? sentMessage : m\n )),\n };\n }\n case actionTypes.RESENDING_MESSAGE_START: {\n const eventedChannel = action.payload.channel;\n const resentMessage = action.payload.message;\n if (eventedChannel.url !== state.currentOpenChannel.url) {\n return state;\n }\n return {\n ...state,\n allMessages: state.allMessages.map((m) => (\n compareIds(m.reqId, resentMessage.reqId) ? resentMessage : m\n )),\n };\n }\n case actionTypes.FETCH_PARTICIPANT_LIST: {\n const eventedChannel = action.payload.channel;\n const fetchedParticipantList = action.payload.users;\n if (eventedChannel.url !== state.currentOpenChannel.url) {\n return state;\n }\n return {\n ...state,\n participants: [... state.participants, ...fetchedParticipantList],\n // Should check duplication\n };\n }\n case actionTypes.FETCH_BANNED_USER_LIST: {\n const eventedChannel = action.payload.channel;\n const fetchedBannedUserList = action.payload.users;\n if (\n (eventedChannel.url !== state.currentOpenChannel.url)\n || !(fetchedBannedUserList.every(user => typeof user.userId === 'string'))\n ) {\n return state;\n }\n return {\n ...state,\n bannedParticipantIds: [\n ... state.bannedParticipantIds,\n ...fetchedBannedUserList.map(user => user.userId),\n ],\n // Should check duplication\n };\n }\n case actionTypes.FETCH_MUTED_USER_LIST: {\n const eventedChannel = action.payload.channel;\n const fetchedMutedUserList = action.payload.users;\n if (\n (eventedChannel.url !== state.currentOpenChannel.url)\n || !(fetchedMutedUserList.every(user => typeof user.userId === 'string'))\n ) {\n return state;\n }\n return {\n ...state,\n mutedParticipantIds: [\n ... state.bannedParticipantIds,\n ...fetchedMutedUserList.map(user => user.userId),\n ],\n // Should check duplication\n };\n }\n // events\n case actionTypes.ON_MESSAGE_RECEIVED: {\n const eventedChannel = action.payload.channel;\n const receivedMessage = action.payload.message;\n\n const {\n currentOpenChannel\n } = state;\n\n if (\n !compareIds(eventedChannel.url, currentOpenChannel.url)\n || (\n !(state.allMessages.map(\n (message) => message.messageId).indexOf(receivedMessage.messageId) < 0\n ))\n ) {\n return state;\n }\n\n return {\n ...state,\n allMessages: [...state.allMessages, receivedMessage],\n };\n }\n case actionTypes.ON_MESSAGE_UPDATED: {\n const eventedChannel = action.payload.channel;\n const updatedMessage = action.payload.message;\n const currentChannel = state.currentOpenChannel;\n if (!currentChannel || currentChannel.url && (currentChannel.url !== eventedChannel.url)) {\n return state;\n }\n return {\n ...state,\n allMessages: state.allMessages.map((message) => (\n message.isIdentical(updatedMessage)\n ? updatedMessage\n : message\n )),\n };\n }\n case actionTypes.ON_MESSAGE_DELETED: {\n const eventedChannel = action.payload.channel;\n const deletedMessageId = action.payload.messageId;\n const currentChannel = state.currentOpenChannel;\n if (!currentChannel || currentChannel.url && (currentChannel.url !== eventedChannel.url)) {\n return state;\n }\n return {\n ...state,\n allMessages: state.allMessages.filter((message) => (\n !compareIds(message.messageId, deletedMessageId)\n )),\n };\n }\n case actionTypes.ON_MESSAGE_DELETED_BY_REQ_ID: {\n return {\n ...state,\n allMessages: state.allMessages.filter((m) => (\n !compareIds(m.reqId, action.payload)\n )),\n };\n }\n case actionTypes.ON_OPERATOR_UPDATED: {\n const eventedChannel = action.payload.channel;\n const updatedOperators = action.payload.operators;\n const currentChannel = state.currentOpenChannel;\n if (!currentChannel || currentChannel.url && (currentChannel.url !== eventedChannel.url)) {\n return state;\n }\n return {\n ...state,\n currentOpenChannel: {\n ...state.currentOpenChannel,\n operators: updatedOperators,\n },\n operators: updatedOperators,\n };\n }\n case actionTypes.ON_USER_ENTERED: {\n const eventedChannel = action.payload.channel;\n const enteredUser = action.payload.user;\n const currentChannel = state.currentOpenChannel;\n if (!currentChannel || currentChannel.url && (currentChannel.url !== eventedChannel.url)) {\n return state;\n }\n return {\n ...state,\n participants: [...state.participants, enteredUser],\n };\n }\n case actionTypes.ON_USER_EXITED: {\n const eventedChannel = action.payload.channel;\n const exitedUser = action.payload.user;\n const currentChannel = state.currentOpenChannel;\n if (!currentChannel || currentChannel.url && (currentChannel.url !== eventedChannel.url)) {\n return state;\n }\n return {\n ...state,\n participants: state.participants.filter((participant) => (\n !compareIds(participant.userId, exitedUser.userId)\n )),\n };\n }\n case actionTypes.ON_USER_MUTED: {\n const eventedChannel = action.payload.channel;\n const mutedUser = action.payload.user;\n const currentChannel = state.currentOpenChannel;\n if (\n !currentChannel\n || (currentChannel.url && (currentChannel.url !== eventedChannel.url))\n || state.mutedParticipantIds.indexOf(mutedUser.userId) >= 0\n ) {\n return state;\n }\n return {\n ...state,\n mutedParticipantIds: [...state.mutedParticipantIds, mutedUser.userId],\n };\n }\n case actionTypes.ON_USER_UNMUTED: {\n const eventedChannel = action.payload.channel;\n const unmutedUser = action.payload.user;\n const currentChannel = state.currentOpenChannel;\n if (\n !currentChannel\n || (currentChannel.url && (currentChannel.url !== eventedChannel.url))\n || state.mutedParticipantIds.indexOf(unmutedUser.userId) < 0\n ) {\n return state;\n }\n return {\n ...state,\n mutedParticipantIds: state.mutedParticipantIds.filter(userId => userId !== unmutedUser.userId),\n };\n }\n case actionTypes.ON_USER_BANNED: {\n const eventedChannel = action.payload.channel;\n const bannedUser = action.payload.user;\n const currentChannel = state.currentOpenChannel;\n if (\n !currentChannel\n || (currentChannel.url && (currentChannel.url !== eventedChannel.url))\n || state.bannedParticipantIds.indexOf(bannedUser.userId) >= 0\n ) {\n return state;\n }\n return {\n ...state,\n bannedParticipantIds: [...state.bannedParticipantIds, bannedUser.userId],\n };\n }\n case actionTypes.ON_USER_UNBANNED: {\n const eventedChannel = action.payload.channel;\n const unbannedUser = action.payload.user;\n const currentChannel = state.currentOpenChannel;\n if (\n !currentChannel\n || (currentChannel.url && (currentChannel.url !== eventedChannel.url))\n || state.bannedParticipantIds.indexOf(unbannedUser.userId) < 0\n ) {\n return state;\n }\n return {\n ...state,\n bannedParticipantIds: state.bannedParticipantIds.filter(userId => userId !== unbannedUser.userId),\n };\n }\n case actionTypes.ON_CHANNEL_FROZEN: {\n const frozenChannel = action.payload;\n const currentChannel = state.currentOpenChannel;\n if (!currentChannel || currentChannel.url && (currentChannel.url !== frozenChannel.url)) {\n return state;\n }\n return {\n ...state,\n frozen: true,\n };\n }\n case actionTypes.ON_CHANNEL_UNFROZEN: {\n const unfrozenChannel = action.payload;\n const currentChannel = state.currentOpenChannel;\n if (!currentChannel || currentChannel.url && (currentChannel.url !== unfrozenChannel.url)) {\n return state;\n }\n return {\n ...state,\n frozen: false,\n };\n }\n case actionTypes.ON_CHANNEL_CHANGED: {\n const changedChannel = action.payload;\n const currentChannel = state.currentOpenChannel;\n if (!currentChannel || currentChannel.url && (currentChannel.url !== changedChannel.url)) {\n return state;\n }\n return {\n ...state,\n currentOpenChannel: changedChannel,\n };\n }\n case actionTypes.ON_META_DATA_CREATED: {\n // const eventedChannel = action.payload.channel;\n // const createdMetaData = action.payload.metaData;\n // return {\n // ...state\n // };\n return state;\n }\n case actionTypes.ON_META_DATA_UPDATED: {\n // const eventedChannel = action.payload.channel;\n // const updatedMetaData = action.payload.metaData;\n // return {\n // ...state\n // };\n return state;\n }\n case actionTypes.ON_META_DATA_DELETED: {\n // const eventedChannel = action.payload.channel;\n // const deletedMetaDataKeys = action.payload.metaDataKeys;\n // return {\n // ...state\n // };\n return state;\n }\n case actionTypes.ON_META_COUNTERS_CREATED: {\n // const eventedChannel = action.payload.channel;\n // const createdMetaCounter = action.payload.metaCounter;\n // return {\n // ...state\n // };\n return state;\n }\n case actionTypes.ON_META_COUNTERS_UPDATED: {\n // const eventedChannel = action.payload.channel;\n // const updatedMetaCounter = action.payload.metaCounter;\n // return {\n // ...state\n // };\n return state;\n }\n case actionTypes.ON_META_COUNTERS_DELETED: {\n // const eventedChannel = action.payload.channel;\n // const deletedMetaCounterKeys = action.payload.metaCounterKeys;\n // return {\n // ...state\n // };\n return state;\n }\n case actionTypes.ON_MENTION_RECEIVED: {\n // const eventedChannel = action.payload.channel;\n // const mentionedMessage = action.payload.message;\n // return {\n // ...state\n // };\n return state;\n }\n default:\n return state;\n }\n}\n","import Sendbird from 'sendbird';\nimport { EveryMessage } from '../../../index';\n\nexport interface State {\n allMessages: Array<EveryMessage>;\n loading: boolean;\n initialized: boolean;\n currentOpenChannel: Sendbird.OpenChannel;\n isInvalid: boolean;\n hasMore: boolean;\n lastMessageTimestamp: number;\n frozen: boolean;\n operators: Array<Sendbird.User>;\n participants: Array<Sendbird.User>;\n bannedParticipantIds: Array<string | number>;\n mutedParticipantIds: Array<string | number>;\n}\n\nconst initialState: State = {\n allMessages: [],\n loading: false,\n initialized: false,\n currentOpenChannel: null,\n isInvalid: false,\n hasMore: false,\n lastMessageTimestamp: 0,\n frozen: false,\n operators: [],\n participants: [],\n bannedParticipantIds: [],\n mutedParticipantIds: [],\n};\n\nexport default initialState;\n","import { useEffect } from 'react';\nimport * as messageActionTypes from '../dux/actionTypes';\nimport * as utils from '../utils';\n\ninterface MainProps {\n channelUrl: string;\n sdkInit: boolean;\n fetchingParticipants: boolean;\n}\ninterface ToolProps {\n sdk: SendbirdUIKit.Sdk;\n logger: SendbirdUIKit.Logger;\n messagesDispatcher: ({ type: string, payload: any }) => void;\n}\n\nfunction useSetChannel(\n { channelUrl, sdkInit, fetchingParticipants }: MainProps,\n { sdk, logger, messagesDispatcher }: ToolProps,\n): void {\n useEffect(() => {\n if (channelUrl && sdkInit && sdk && sdk.OpenChannel) {\n logger.info('OpenChannel | useSetChannel fetching channel', channelUrl);\n sdk.OpenChannel.getChannel(channelUrl, (openChannel, error) => {\n if (!error) {\n logger.info('OpenChannel | useSetChannel fetched channel', openChannel);\n messagesDispatcher({\n type: messageActionTypes.SET_CURRENT_CHANNEL,\n payload: openChannel,\n });\n openChannel.enter((_, error) => {\n if (error) {\n logger.warning('OpenChannel | useSetChannel enter channel failed', { channelUrl, error });\n messagesDispatcher({\n type: messageActionTypes.SET_CHANNEL_INVALID,\n payload: null,\n });\n }\n if (fetchingParticipants) {\n // fetch participants, banned participantIds, muted participantIds\n const participantListQuery = openChannel.createParticipantListQuery();\n const bannedParticipantListQuery = openChannel.createBannedUserListQuery();\n const mutedParticipantListQuery = openChannel.createMutedUserListQuery();\n utils.fetchWithListQuery(\n participantListQuery,\n logger,\n (users) => {\n messagesDispatcher({\n type: messageActionTypes.FETCH_PARTICIPANT_LIST,\n payload: {\n channel: openChannel,\n users,\n },\n });\n },\n );\n utils.fetchWithListQuery(\n bannedParticipantListQuery,\n logger,\n (users) => {\n messagesDispatcher({\n type: messageActionTypes.FETCH_BANNED_USER_LIST,\n payload: {\n channel: openChannel,\n users,\n },\n });\n },\n );\n utils.fetchWithListQuery(\n mutedParticipantListQuery,\n logger,\n (users) => {\n messagesDispatcher({\n type: messageActionTypes.FETCH_MUTED_USER_LIST,\n payload: {\n channel: openChannel,\n users,\n },\n });\n },\n );\n }\n });\n } else {\n logger.warning('OpenChannel | useSetChannel fetching channel failed', { channelUrl, error });\n messagesDispatcher({\n type: messageActionTypes.SET_CHANNEL_INVALID,\n payload: null,\n });\n }\n });\n // .then((openChannel) => {\n // logger.info('OpenChannel | useSetChannel fetched channel', openChannel);\n // messagesDispatcher({\n // type: messageActionTypes.SET_CURRENT_CHANNEL,\n // payload: openChannel,\n // });\n // openChannel.enter((_, error) => {\n // if (error) {\n // logger.warning('OpenChannel | useSetChannel enter channel failed', { channelUrl, error });\n // messagesDispatcher({\n // type: messageActionTypes.SET_CHANNEL_INVALID,\n // });\n // }\n // if (fetchingParticipants) {\n // // fetch participants, banned participantIds, muted participantIds\n // const participantListQuery = openChannel.createParticipantListQuery();\n // const bannedParticipantListQuery = openChannel.createBannedUserListQuery();\n // const mutedParticipantListQuery = openChannel.createMutedUserListQuery();\n // utils.fetchWithListQuery(\n // participantListQuery,\n // logger,\n // (users) => {\n // messagesDispatcher({\n // type: messageActionTypes.FETCH_PARTICIPANT_LIST,\n // payload: {\n // channel: openChannel,\n // users,\n // },\n // });\n // },\n // );\n // utils.fetchWithListQuery(\n // bannedParticipantListQuery,\n // logger,\n // (users) => {\n // messagesDispatcher({\n // type: messageActionTypes.FETCH_BANNED_USER_LIST,\n // payload: {\n // channel: openChannel,\n // users,\n // },\n // });\n // },\n // );\n // utils.fetchWithListQuery(\n // mutedParticipantListQuery,\n // logger,\n // (users) => {\n // messagesDispatcher({\n // type: messageActionTypes.FETCH_MUTED_USER_LIST,\n // payload: {\n // channel: openChannel,\n // users,\n // },\n // });\n // },\n // );\n // }\n // });\n // })\n // .catch((error) => {\n // logger.warning('OpenChannel | useSetChannel fetching channel failed', { channelUrl, error });\n // messagesDispatcher({\n // type: messageActionTypes.SET_CHANNEL_INVALID,\n // });\n // });\n }\n }, [channelUrl, sdkInit, fetchingParticipants]);\n}\n\nexport default useSetChannel;\n","import { useEffect } from 'react';\nimport * as messageActionTypes from '../dux/actionTypes';\nimport uuidv4 from '../../../utils/uuid';\nimport { scrollIntoLast } from '../utils';\n\ninterface MainProps {\n currentOpenChannel: SendbirdUIKit.OpenChannelType;\n checkScrollBottom: () => boolean;\n}\ninterface ToolProps {\n sdk: SendbirdUIKit.Sdk;\n logger: SendbirdUIKit.Logger;\n messagesDispatcher: ({ type: string, payload: any }) => void;\n}\n\nfunction useHandleChannelEvents(\n { currentOpenChannel, checkScrollBottom }: MainProps,\n { sdk, logger, messagesDispatcher }: ToolProps,\n): void {\n useEffect(() => {\n const messageReceiverId = uuidv4();\n if (currentOpenChannel && currentOpenChannel.url && sdk && sdk.ChannelHandler) {\n const ChannelHandler = new sdk.ChannelHandler();\n logger.info('OpenChannel | useHandleChannelEvents: Setup evnet handler', messageReceiverId);\n\n ChannelHandler.onMessageReceived = (channel, message) => {\n const scrollToEnd = checkScrollBottom();\n const channelUrl = channel.url;\n logger.info('OpenChannel | useHandleChannelEvents: onMessageReceived', { channelUrl, message });\n messagesDispatcher({\n type: messageActionTypes.ON_MESSAGE_RECEIVED,\n payload: { channel, message },\n });\n if (scrollToEnd) {\n try {\n setTimeout(() => {\n scrollIntoLast();\n });\n } catch (error) {\n logger.warning('OpenChannel | onMessageReceived | scroll to end failed');\n }\n }\n };\n ChannelHandler.onMessageUpdated = (channel, message) => {\n const channelUrl = channel.url;\n logger.info('OpenChannel | useHandleChannelEvents: onMessageUpdated', { channelUrl, message });\n messagesDispatcher({\n type: messageActionTypes.ON_MESSAGE_UPDATED,\n payload: { channel, message },\n });\n };\n ChannelHandler.onMessageDeleted = (channel, messageId) => {\n const channelUrl = channel.url;\n logger.info('OpenChannel | useHandleChannelEvents: onMessageDeleted', { channelUrl, messageId });\n messagesDispatcher({\n type: messageActionTypes.ON_MESSAGE_DELETED,\n payload: { channel, messageId },\n });\n };\n ChannelHandler.onOperatorUpdated = (channel, operators) => {\n const channelUrl = channel.url;\n logger.info('OpenChannel | useHandleChannelEvents: onOperatorUpdated', { channelUrl, operators });\n messagesDispatcher({\n type: messageActionTypes.ON_OPERATOR_UPDATED,\n payload: { channel, operators },\n });\n };\n ChannelHandler.onUserEntered = (channel, user) => {\n const channelUrl = channel.url;\n logger.info('OpenChannel | useHandleChannelEvents: onUserEntered', { channelUrl, user });\n messagesDispatcher({\n type: messageActionTypes.ON_USER_ENTERED,\n payload: { channel, user },\n });\n };\n ChannelHandler.onUserExited = (channel, user) => {\n const channelUrl = channel.url;\n logger.info('OpenChannel | useHandleChannelEvents: onUserExited', { channelUrl, user });\n messagesDispatcher({\n type: messageActionTypes.ON_USER_EXITED,\n payload: { channel, user },\n });\n };\n ChannelHandler.onUserMuted = (channel, user) => {\n const channelUrl = channel.url;\n logger.info('OpenChannel | useHandleChannelEvents: onUserMuted', { channelUrl, user });\n messagesDispatcher({\n type: messageActionTypes.ON_USER_MUTED,\n payload: { channel, user },\n });\n };\n ChannelHandler.onUserUnmuted = (channel, user) => {\n const channelUrl = channel.url;\n logger.info('OpenChannel | useHandleChannelEvents: onUserUnmuted', { channelUrl, user });\n messagesDispatcher({\n type: messageActionTypes.ON_USER_UNMUTED,\n payload: { channel, user },\n });\n };\n ChannelHandler.onUserBanned = (channel, user) => {\n const channelUrl = channel.url;\n logger.info('OpenChannel | useHandleChannelEvents: onUserBanned', { channelUrl, user });\n messagesDispatcher({\n type: messageActionTypes.ON_USER_BANNED,\n payload: { channel, user },\n });\n };\n ChannelHandler.onUserUnbanned = (channel, user) => {\n const channelUrl = channel.url;\n logger.info('OpenChannel | useHandleChannelEvents: onUserUnbanned', { channelUrl, user });\n messagesDispatcher({\n type: messageActionTypes.ON_USER_UNBANNED,\n payload: { channel, user },\n });\n };\n ChannelHandler.onChannelFrozen = (channel) => {\n logger.info('OpenChannel | useHandleChannelEvents: onChannelFrozen', channel);\n messagesDispatcher({\n type: messageActionTypes.ON_CHANNEL_FROZEN,\n payload: channel,\n });\n };\n ChannelHandler.onChannelUnfrozen = (channel) => {\n logger.info('OpenChannel | useHandleChannelEvents: onChannelUnfrozen', channel);\n messagesDispatcher({\n type: messageActionTypes.ON_CHANNEL_UNFROZEN,\n payload: channel,\n });\n };\n ChannelHandler.onChannelChanged = (channel) => {\n logger.info('OpenChannel | useHandleChannelEvents: onChannelChanged', channel);\n messagesDispatcher({\n type: messageActionTypes.ON_CHANNEL_CHANGED,\n payload: channel,\n });\n };\n ChannelHandler.onMetaDataCreated = (channel, metaData) => {\n const channelUrl = channel.url;\n logger.info('OpenChannel | useHandleChannelEvents: onMetaDataCreated', { channelUrl, metaData });\n messagesDispatcher({\n type: messageActionTypes.ON_META_DATA_CREATED,\n payload: { channel, metaData },\n });\n };\n ChannelHandler.onMetaDataUpdated = (channel, metaData) => {\n const channelUrl = channel.url;\n logger.info('OpenChannel | useHandleChannelEvents: onMetaDataUpdated', { channelUrl, metaData });\n messagesDispatcher({\n type: messageActionTypes.ON_META_DATA_UPDATED,\n payload: { channel, metaData },\n });\n };\n ChannelHandler.onMetaDataDeleted = (channel, metaDataKeys) => {\n const channelUrl = channel.url;\n logger.info('OpenChannel | useHandleChannelEvents: onMetaDataDeleted', { channelUrl, metaDataKeys });\n messagesDispatcher({\n type: messageActionTypes.ON_META_DATA_DELETED,\n payload: { channel, metaDataKeys },\n });\n };\n ChannelHandler.onMetaCountersCreated = (channel, metaCounter) => {\n const channelUrl = channel.url;\n logger.info('OpenChannel | useHandleChannelEvents: onMetaCountersCreated', { channelUrl, metaCounter });\n messagesDispatcher({\n type: messageActionTypes.ON_META_COUNTERS_CREATED,\n payload: { channel, metaCounter },\n });\n };\n ChannelHandler.onMetaCountersUpdated = (channel, metaCounter) => {\n const channelUrl = channel.url;\n logger.info('OpenChannel | useHandleChannelEvents: onMetaCountersUpdated', { channelUrl, metaCounter });\n messagesDispatcher({\n type: messageActionTypes.ON_META_COUNTERS_UPDATED,\n payload: { channel, metaCounter },\n });\n };\n ChannelHandler.onMetaCountersDeleted = (channel, metaCounterKeys) => {\n const channelUrl = channel.url;\n logger.info('OpenChannel | useHandleChannelEvents: onMetaCountersDeleted', { channelUrl, metaCounterKeys });\n messagesDispatcher({\n type: messageActionTypes.ON_META_COUNTERS_DELETED,\n payload: { channel, metaCounterKeys },\n });\n };\n ChannelHandler.onMentionReceived = (channel, message) => {\n const channelUrl = channel.url;\n logger.info('OpenChannel | useHandleChannelEvents: onMentionReceived', { channelUrl, message });\n messagesDispatcher({\n type: messageActionTypes.ON_MENTION_RECEIVED,\n payload: { channel, message },\n });\n };\n\n sdk.addChannelHandler(messageReceiverId, ChannelHandler);\n }\n\n return () => {\n if (sdk && sdk.removeChannelHandler) {\n logger.info('OpenChannel | useHandleChannelEvents: Removing message receiver handler', messageReceiverId);\n sdk.removeChannelHandler(messageReceiverId);\n }\n }\n }, [currentOpenChannel]);\n}\n\nexport default useHandleChannelEvents;\n","import { useEffect } from 'react';\nimport * as messageActionTypes from '../dux/actionTypes';\nimport { scrollIntoLast } from '../utils';\n\ninterface MainProps {\n currentOpenChannel: SendbirdUIKit.OpenChannelType;\n /* eslint-disable @typescript-eslint/no-explicit-any*/\n userFilledMessageListParams?: Record<string, any>;\n}\ninterface ToolProps {\n sdk: SendbirdUIKit.Sdk;\n logger: SendbirdUIKit.Logger;\n messagesDispatcher: ({ type: string, payload: any }) => void;\n}\n\nfunction useInitialMessagesFetch(\n { currentOpenChannel, userFilledMessageListParams }: MainProps,\n { sdk, logger, messagesDispatcher }: ToolProps,\n): void {\n useEffect(() => {\n logger.info('OpenChannel | useInitialMessagesFetch: Setup started', currentOpenChannel);\n messagesDispatcher({\n type: messageActionTypes.RESET_MESSAGES,\n payload: null,\n });\n\n if (sdk && sdk.MessageListParams && currentOpenChannel && currentOpenChannel.getMessagesByTimestamp) {\n const messageListParams = new sdk.MessageListParams();\n messageListParams.prevResultSize = 30;\n messageListParams.isInclusive = true;\n messageListParams.includeReplies = false;\n messageListParams.includeReactions = false;\n if (userFilledMessageListParams) {\n Object.keys(userFilledMessageListParams).forEach((key) => {\n messageListParams[key] = userFilledMessageListParams[key];\n });\n logger.info('OpenChannel | useInitialMessagesFetch: Used customizedMessageListParams');\n }\n\n logger.info('OpenChannel | useInitialMessagesFetch: Fetching messages', { currentOpenChannel, messageListParams });\n messagesDispatcher({\n type: messageActionTypes.GET_PREV_MESSAGES_START,\n payload: null,\n });\n currentOpenChannel.getMessagesByTimestamp(new Date().getTime(), messageListParams, (messages, error) => {\n if (!error) {\n logger.info('OpenChannel | useInitialMessagesFetch: Fetching messages succeeded', messages);\n const hasMore = (messages && messages.length > 0);\n const lastMessageTimestamp = hasMore ? messages[0].createdAt : null;\n messagesDispatcher({\n type: messageActionTypes.GET_PREV_MESSAGES_SUCESS,\n payload: {\n currentOpenChannel,\n messages,\n hasMore,\n lastMessageTimestamp,\n },\n });\n setTimeout(() => { scrollIntoLast(); });\n } else {\n logger.error('OpenChannel | useInitialMessagesFetch: Fetching messages failed', error);\n messagesDispatcher({\n type: messageActionTypes.GET_PREV_MESSAGES_FAIL,\n payload: {\n currentOpenChannel,\n messages: [],\n hasMore: false,\n lastMessageTimestamp: 0,\n },\n });\n }\n });\n }\n }, [currentOpenChannel, userFilledMessageListParams]);\n}\n\nexport default useInitialMessagesFetch;\n","import { useCallback } from 'react';\nimport * as messageActionTypes from '../dux/actionTypes';\n\ninterface MainProps {\n currentOpenChannel: SendbirdUIKit.OpenChannelType;\n lastMessageTimestamp: number;\n}\ninterface ToolProps {\n sdk: SendbirdUIKit.Sdk;\n logger: SendbirdUIKit.Logger;\n messagesDispatcher: ({ type: string, payload: any }) => void;\n hasMore: boolean;\n /* eslint-disable @typescript-eslint/no-explicit-any*/\n userFilledMessageListParams?: Record<string, any>;\n}\ntype CallbackReturn = (callback: () => void) => void;\n\nfunction useScrollCallback(\n { currentOpenChannel, lastMessageTimestamp }: MainProps,\n { sdk, logger, messagesDispatcher, hasMore, userFilledMessageListParams }: ToolProps,\n): CallbackReturn {\n return useCallback((callback) => {\n if (hasMore && sdk && sdk.MessageListParams) {\n logger.info('OpenChannel | useScrollCallback: start');\n const messageListParams = new sdk.MessageListParams();\n messageListParams.prevResultSize = 30;\n messageListParams.includeReplies = false;\n messageListParams.includeReactions = false;\n\n if (userFilledMessageListParams) {\n Object.keys(userFilledMessageListParams).forEach((key) => {\n messageListParams[key] = userFilledMessageListParams[key];\n });\n logger.info('OpenChannel | useScrollCallback: Used userFilledMessageListParams', userFilledMessageListParams);\n }\n\n logger.info('OpenChannel | useScrollCallback: Fetching messages', { currentOpenChannel, messageListParams });\n\n currentOpenChannel.getMessagesByTimestamp(lastMessageTimestamp || new Date().getTime(), messageListParams, (messages, error) => {\n if (!error) {\n logger.info('OpenChannel | useScrollCallback: Fetching messages succeeded', messages);\n const hasMore = (messages && messages.length > 0);\n const lastMessageTimestamp = hasMore ? messages[0].createdAt : null;\n messagesDispatcher({\n type: messageActionTypes.GET_PREV_MESSAGES_SUCESS,\n payload: {\n currentOpenChannel,\n messages,\n hasMore,\n lastMessageTimestamp,\n }\n });\n setTimeout(() => {\n callback();\n });\n } else {\n logger.error('OpenChannel | useScrollCallback: Fetching messages failed', error);\n messagesDispatcher({\n type: messageActionTypes.GET_PREV_MESSAGES_FAIL,\n payload: {\n currentOpenChannel,\n messages: [],\n hasMore: false,\n lastMessageTimestamp: 0,\n }\n });\n }\n });\n }\n }, [currentOpenChannel, lastMessageTimestamp]);\n}\n\nexport default useScrollCallback;\n","import { useCallback } from 'react';\n\ninterface MainProps {\n conversationScrollRef: React.RefObject<HTMLDivElement>;\n}\ninterface ToolProps {\n logger: SendbirdUIKit.Logger;\n}\n\nfunction useCheckScrollBottom(\n { conversationScrollRef }: MainProps,\n { logger }: ToolProps,\n): () => boolean {\n return useCallback(() => {\n let isBottom = true;\n if (conversationScrollRef) {\n try {\n const conversationScroll = conversationScrollRef.current;\n isBottom = conversationScroll.scrollHeight <= conversationScroll.scrollTop + conversationScroll.clientHeight;\n } catch(error) {\n logger.error('OpenChannel | useCheckScrollBottom', error);\n }\n }\n return isBottom;\n }, [conversationScrollRef])\n}\n\nexport default useCheckScrollBottom;\n","import Sendbird from 'sendbird';\nimport { useCallback } from 'react';\nimport * as messageActionTypes from '../dux/actionTypes';\nimport * as utils from '../utils';\n\ninterface MainProps {\n currentOpenChannel: SendbirdUIKit.OpenChannelType;\n onBeforeSendUserMessage: (text: string) => Sendbird.UserMessageParams;\n checkScrollBottom: () => boolean;\n messageInputRef: React.RefObject<HTMLInputElement>;\n}\ninterface ToolProps {\n sdk: SendbirdUIKit.Sdk;\n logger: SendbirdUIKit.Logger;\n messagesDispatcher: ({ type: string, payload: any }) => void;\n}\n\nfunction useSendMessageCallback(\n { currentOpenChannel, onBeforeSendUserMessage, checkScrollBottom, messageInputRef }: MainProps,\n { sdk, logger, messagesDispatcher }: ToolProps,\n): () => void {\n return useCallback(() => {\n if (sdk && sdk.UserMessageParams) {\n const text = messageInputRef.current.value;\n const createParamsDefault = (txt: string | number): Sendbird.UserMessageParams => {\n const message = typeof txt === 'string' ? txt.trim() : txt.toString(10).trim();\n const params = new sdk.UserMessageParams();\n params.message = message;\n return params;\n }\n const createCustomParams = onBeforeSendUserMessage && typeof onBeforeSendUserMessage === 'function';\n if (createCustomParams) {\n logger.info('OpenChannel | useSendMessageCallback: Creating params using onBeforeSendUserMessage', onBeforeSendUserMessage);\n }\n const params = onBeforeSendUserMessage ? onBeforeSendUserMessage(text) : createParamsDefault(text);\n logger.info('OpenChannel | useSendMessageCallback: Sending message has started', params);\n\n const isBottom = checkScrollBottom();\n const pendingMessage = currentOpenChannel.sendUserMessage(params, (message, error) => {\n if (!error) {\n logger.info('OpenChannel | useSendMessageCallback: Sending message succeeded', message);\n messagesDispatcher({\n type: messageActionTypes.SENDING_MESSAGE_SUCCEEDED,\n payload: message,\n });\n if (isBottom) {\n setTimeout(() => {\n utils.scrollIntoLast();\n });\n }\n } else {\n logger.warning('OpenChannel | useSendMessageCallback: Sending message failed', error);\n messagesDispatcher({\n type: messageActionTypes.SENDING_MESSAGE_FAILED,\n payload: messageActionTypes,\n });\n }\n });\n messagesDispatcher({\n type: messageActionTypes.SENDING_MESSAGE_START,\n payload: {\n message: pendingMessage,\n channel: currentOpenChannel,\n }\n });\n }\n }, [currentOpenChannel, onBeforeSendUserMessage, checkScrollBottom, messageInputRef]);\n}\n\nexport default useSendMessageCallback;\n","import Sendbird from 'sendbird';\nimport { useCallback } from 'react';\nimport * as messageActionTypes from '../dux/actionTypes';\nimport * as utils from '../utils';\n\ninterface MainProps {\n currentOpenChannel: SendbirdUIKit.OpenChannelType;\n onBeforeSendFileMessage: (file: File) => Sendbird.FileMessageParams;\n checkScrollBottom: () => boolean;\n imageCompression?: {\n compressionRate?: number,\n resizingWidth?: number | string,\n resizingHeight?: number | string,\n };\n}\ninterface ToolProps {\n sdk: SendbirdUIKit.Sdk;\n logger: SendbirdUIKit.Logger;\n messagesDispatcher: ({ type: string, payload: any }) => void;\n}\n\ntype CallbackReturn = (file: File) => void;\n\nfunction useFileUploadCallback(\n {\n currentOpenChannel,\n checkScrollBottom,\n imageCompression = {},\n onBeforeSendFileMessage,\n }: MainProps,\n { sdk, logger, messagesDispatcher }: ToolProps,\n): CallbackReturn {\n return useCallback((file) => {\n if (sdk && sdk.FileMessageParams) {\n const {\n compressionRate,\n resizingWidth,\n resizingHeight,\n } = imageCompression;\n const createCustomParams = onBeforeSendFileMessage && typeof onBeforeSendFileMessage === 'function';\n\n const compressibleFileType = (file.type === 'image/jpg' || file.type === 'image/png' || file.type === 'image/jpeg');\n const compressibleRatio = (compressionRate > 0) && (compressionRate < 1);\n // pxToNumber returns null if values are invalid\n const compressibleDiamensions = utils.pxToNumber(resizingWidth)\n || utils.pxToNumber(resizingHeight);\n\n const canCompressImage = compressibleFileType && (compressibleRatio || compressibleDiamensions);\n\n const createParamsDefault = (file_): Sendbird.FileMessageParams => {\n const params = new sdk.FileMessageParams();\n params.file = file_;\n return params;\n };\n\n if (canCompressImage) { // Using image compression\n try {\n const image: HTMLImageElement = document.createElement('img');\n image.src = URL.createObjectURL(file);\n image.onload = () => {\n URL.revokeObjectURL(image.src);\n const canvas = document.createElement('canvas');\n const imageWidth = image.naturalWidth || image.width;\n const imageHeight = image.naturalHeight || image.height;\n let targetWidth = utils.pxToNumber(resizingWidth) || imageWidth;\n let targetHeight = utils.pxToNumber(resizingHeight) || imageHeight;\n\n // In canvas.toBlob(callback, mimeType, qualityArgument)\n // qualityArgument doesnt work\n // so in case compressibleDiamensions are not present, we use ratio\n if (file.type === 'image/png' && !compressibleDiamensions) {\n targetWidth *= compressionRate;\n targetHeight *= compressionRate;\n }\n\n canvas.width = targetWidth;\n canvas.height = targetHeight;\n const context = canvas.getContext('2d');\n context.drawImage(image, 0, 0, targetWidth, targetHeight);\n context.canvas.toBlob(\n (newImageBlob) => {\n const compressedFile = new File([newImageBlob], file.name, { type: file.type });\n if (createCustomParams) {\n logger.info('OpenChannel | useFileUploadCallback: Creating params using onBeforeSendFileMessage', onBeforeSendFileMessage);\n }\n const params = onBeforeSendFileMessage ? onBeforeSendFileMessage(compressedFile) : createParamsDefault(compressedFile);\n logger.info('OpenChannel | useFileUploadCallback: Uploading file message start', params);\n\n const isBottom = checkScrollBottom();\n const pendingMessage = currentOpenChannel.sendFileMessage(\n params,\n (message: SendbirdUIKit.ClientFileMessage, error) => {\n if (!error) {\n logger.info('OpenChannel | useFileUploadCallback: Sending message succeeded', message);\n messagesDispatcher({\n type: messageActionTypes.SENDING_MESSAGE_SUCCEEDED,\n payload: message,\n });\n if (isBottom) {\n setTimeout(() => {\n utils.scrollIntoLast();\n });\n }\n } else {\n logger.error('OpenChannel | useFileUploadCallback: Sending file message failed', { message, error });\n message.localUrl = URL.createObjectURL(file);\n message.file = file;\n messagesDispatcher({\n type: messageActionTypes.SENDING_MESSAGE_FAILED,\n payload: message,\n });\n }\n },\n );\n\n messagesDispatcher({\n type: messageActionTypes.SENDING_MESSAGE_START,\n payload: {\n message: {\n ...pendingMessage,\n url: URL.createObjectURL(file),\n // pending thumbnail message seems to be failed\n requestState: 'pending',\n },\n channel: currentOpenChannel,\n }\n });\n },\n file.type,\n compressionRate,\n );\n }\n } catch (error) {\n logger.warning('OpenChannel | useFileUploadCallback: Sending file message with image compression failed', error);\n }\n } else { // Not using image compression\n if (createCustomParams) {\n logger.info('OpenChannel | useFileUploadCallback: Creating params using onBeforeSendFileMessage', onBeforeSendFileMessage);\n }\n const params = onBeforeSendFileMessage ? onBeforeSendFileMessage(file) : createParamsDefault(file);\n logger.info('OpenChannel | useFileUploadCallback: Uploading file message start', params);\n\n const isBottom = checkScrollBottom();\n const pendingMessage = currentOpenChannel.sendFileMessage(\n params,\n (message: SendbirdUIKit.ClientFileMessage, error) => {\n if (!error) {\n logger.info('OpenChannel | useFileUploadCallback: Sending message succeeded', message);\n messagesDispatcher({\n type: messageActionTypes.SENDING_MESSAGE_SUCCEEDED,\n payload: message,\n });\n if (isBottom) {\n setTimeout(() => {\n utils.scrollIntoLast();\n });\n }\n } else {\n logger.error('OpenChannel | useFileUploadCallback: Sending file message failed', { message, error });\n message.localUrl = URL.createObjectURL(file);\n message.file = file;\n messagesDispatcher({\n type: messageActionTypes.SENDING_MESSAGE_FAILED,\n payload: message,\n });\n }\n }\n );\n\n messagesDispatcher({\n type: messageActionTypes.SENDING_MESSAGE_START,\n payload: {\n message: {\n ...pendingMessage,\n url: URL.createObjectURL(file),\n // pending thumbnail message seems to be failed\n requestState: 'pending',\n },\n channel: currentOpenChannel,\n }\n });\n }\n }\n }, [currentOpenChannel, onBeforeSendFileMessage, checkScrollBottom, imageCompression]);\n}\n\nexport default useFileUploadCallback;\n","import Sendbird from 'sendbird';\nimport { useCallback } from 'react';\nimport * as messageActionTypes from '../dux/actionTypes';\n\ninterface MainProps {\n currentOpenChannel: SendbirdUIKit.OpenChannelType;\n onBeforeSendUserMessage?: (text) => Sendbird.UserMessageParams;\n}\ninterface ToolProps {\n sdk: SendbirdUIKit.Sdk;\n logger: SendbirdUIKit.Logger;\n messagesDispatcher: ({ type: string, payload :any }) => void;\n}\ntype CallbackReturn = (messageId, text, callback) => void;\n\nfunction useUpdateMessageCallback(\n { currentOpenChannel, onBeforeSendUserMessage }: MainProps,\n { sdk, logger, messagesDispatcher }: ToolProps,\n): CallbackReturn {\n return useCallback((messageId, text, callback) => {\n const createParamsDefault = (txt) => {\n const params = new sdk.UserMessageParams();\n params.message = txt;\n return params;\n };\n\n if (onBeforeSendUserMessage && typeof onBeforeSendUserMessage === 'function') {\n logger.info('OpenChannel | useUpdateMessageCallback: Creating params using onBeforeUpdateUserMessage');\n }\n const params = onBeforeSendUserMessage ? onBeforeSendUserMessage(text) : createParamsDefault(text);\n currentOpenChannel.updateUserMessage(messageId, params, (message, error) => {\n if (callback) {\n callback();\n }\n if (!error) {\n logger.info('OpenChannel | useUpdateMessageCallback: Updating message succeeded', { message, params });\n messagesDispatcher({\n type: messageActionTypes.ON_MESSAGE_UPDATED,\n payload: {\n channel: currentOpenChannel,\n message,\n },\n });\n } else {\n logger.warning('OpenChannel | useUpdateMessageCallback: Updating message failed', error);\n }\n });\n }, [currentOpenChannel, onBeforeSendUserMessage]);\n}\n\nexport default useUpdateMessageCallback;\n","import { useCallback } from 'react';\nimport * as messageActionTypes from '../dux/actionTypes';\n\ninterface MainProps {\n currentOpenChannel: SendbirdUIKit.OpenChannelType;\n}\ninterface ToolProps {\n logger: SendbirdUIKit.Logger;\n messagesDispatcher: ({ type: string, payload: any }) => void;\n}\n\ntype CallbackReturn = (\n message: SendbirdUIKit.ClientUserMessage | SendbirdUIKit.ClientFileMessage,\n callback?: () => void,\n) => void;\n\nfunction useDeleteMessageCallback(\n { currentOpenChannel }: MainProps,\n { logger, messagesDispatcher }: ToolProps,\n): CallbackReturn {\n return useCallback((message, callback) => {\n logger.info('OpenChannel | useDeleteMessageCallback: Deleting message', message);\n const { sendingStatus } = message;\n logger.info('OpenChannel | useDeleteMessageCallback: Deleting message requestState', sendingStatus);\n\n if (sendingStatus === 'failed' || sendingStatus === 'pending') {\n logger.info('OpenChannel | useDeleteMessageCallback: Deleted message from local', message);\n messagesDispatcher({\n type: messageActionTypes.ON_MESSAGE_DELETED_BY_REQ_ID,\n payload: message.reqId,\n });\n if (callback) {\n callback();\n }\n } else {\n if (!(message.messageType ==='file' || message.messageType === 'user')) {\n return;\n }\n const messageToDelete = message as SendBird.UserMessage;\n currentOpenChannel.deleteMessage(messageToDelete, (error) => {\n logger.info('OpenChannel | useDeleteMessageCallback: Deleting message on server', sendingStatus);\n if (callback) {\n callback();\n }\n if (!error) {\n logger.info('OpenChannel | useDeleteMessageCallback: Deleting message succeeded', message);\n messagesDispatcher({\n type: messageActionTypes.ON_MESSAGE_DELETED,\n payload: {\n channel: currentOpenChannel,\n messageId: message.messageId,\n },\n });\n } else {\n logger.warning('OpenChannel | useDeleteMessageCallback: Deleting message failed', error);\n }\n });\n }\n }, [currentOpenChannel]);\n}\n\nexport default useDeleteMessageCallback;\n","import { useCallback } from 'react';\nimport * as messageActionTypes from '../dux/actionTypes';\n\ninterface MainProps {\n currentOpenChannel: SendbirdUIKit.OpenChannelType;\n}\ninterface ToolProps {\n logger: SendbirdUIKit.Logger;\n messagesDispatcher: ({ type: string, payload: any }) => void;\n}\ntype CallbackReturn = (failedMessage: SendbirdUIKit.ClientUserMessage | SendbirdUIKit.ClientFileMessage) => void;\n\nfunction useResendMessageCallback(\n { currentOpenChannel }: MainProps,\n { logger, messagesDispatcher }: ToolProps,\n): CallbackReturn {\n return useCallback((failedMessage) => {\n logger.info('OpenChannel | useResendMessageCallback: Resending message has started', failedMessage);\n const { messageType, file } = failedMessage;\n if (failedMessage && typeof failedMessage.isResendable === 'function' && failedMessage.isResendable()) {\n // eslint-disable-next-line no-param-reassign\n failedMessage.requestState = 'pending';\n messagesDispatcher({\n type: messageActionTypes.RESENDING_MESSAGE_START,\n payload: {\n channel: currentOpenChannel,\n message: failedMessage,\n },\n });\n\n // userMessage\n if (messageType === 'user' && failedMessage.messageType === 'user') {\n currentOpenChannel.resendUserMessage(failedMessage, (message, error) => {\n if (!error) {\n logger.info('OpenChannel | useResendMessageCallback: Reseding message succeeded', message);\n messagesDispatcher({\n type: messageActionTypes.SENDING_MESSAGE_SUCCEEDED,\n payload: message,\n });\n } else {\n logger.warning('OpenChannel | useResendMessageCallback: Resending message failed', error);\n // eslint-disable-next-line no-param-reassign\n failedMessage.requestState = 'failed';\n messagesDispatcher({\n type: messageActionTypes.SENDING_MESSAGE_FAILED,\n payload: failedMessage,\n });\n }\n });\n return;\n }\n\n // fileMessage\n if (messageType === 'file' && failedMessage.messageType === 'file') {\n currentOpenChannel.resendFileMessage(failedMessage, file, (message, error) => {\n if (!error) {\n logger.info('OpenChannel | useResendMessageCallback: Resending file message succeeded', message);\n messagesDispatcher({\n type: messageActionTypes.SENDING_MESSAGE_SUCCEEDED,\n payload: message,\n });\n } else {\n logger.warning('OpenChannel | useResendMessageCallback: Resending file message failed', error);\n // eslint-disable-next-line no-param-reassign\n failedMessage.requestState = 'failed';\n messagesDispatcher({\n type: messageActionTypes.SENDING_MESSAGE_FAILED,\n payload: failedMessage,\n });\n }\n });\n }\n } else {\n // to alert user on console\n // eslint-disable-next-line no-console\n console.error('OpenChannel | useResendMessageCallback: Message is not resendable');\n logger.warning('OpenChannel | useResendMessageCallback: Message is not resendable', failedMessage);\n }\n }, [currentOpenChannel]);\n}\n\nexport default useResendMessageCallback;\n","import React, {\n useRef,\n useEffect,\n useReducer,\n useContext,\n useMemo,\n} from 'react';\nimport * as utils from './utils';\nimport './index.scss';\n\nimport MessageInputWrapper from './components/MessageInpuetWrapper';\nimport FrozenChannelNotification from './components/FrozenNotification';\nimport OpenchannelConversationHeader from '../../ui/OpenchannelConversationHeader';\nimport OpenchannelConversationScroll from './components/OpenchannelConversationScroll';\nimport PlaceHolder, { PlaceHolderTypes } from '../../ui/PlaceHolder';\nimport { UserProfileProvider } from '../../lib/UserProfileContext';\n\nimport { OpenChannelProps } from '../../index';\nimport messagesReducer from './dux/reducers';\nimport messagesInitialState from './dux/initialState';\nimport * as messageActionTypes from './dux/actionTypes';\nimport withSendbirdContext from '../../lib/SendbirdSdkContext.jsx';\nimport { LocalizationContext } from '../../lib/LocalizationContext';\nimport { scrollIntoLast } from './utils';\nimport * as topics from '../../lib/pubSub/topics';\n\n// hooks\nimport useSetChannel from './hooks/useSetChannel';\nimport useHandleChannelEvents from './hooks/useHandleChannelEvents';\nimport useInitialMessagesFetch from './hooks/useInitialMessagesFetch';\nimport useScrollCallback from './hooks/useScrollCallback';\nimport useCheckScrollBottom from './hooks/useCheckScrollBottom';\nimport useSendMessageCallback from './hooks/useSendMessageCallback';\nimport useFileUploadCallback from './hooks/useFileUploadCallback';\nimport useUpdateMessageCallback from './hooks/useUpdateMessageCallback';\nimport useDeleteMessageCallback from './hooks/useDeleteMessageCallback';\nimport useResendMessageCallback from './hooks/useResendMessageCallback';\n\nconst COMPONENT_CLASS_NAME = 'sendbird-openchannel-conversation';\n\ninterface Props extends OpenChannelProps {\n stores: {\n sdkStore?: SendbirdUIKit.SdkStore,\n userStore?: SendbirdUIKit.UserStore,\n };\n config: {\n userId: string,\n isOnline: boolean,\n logger?: SendbirdUIKit.Logger,\n theme?: string,\n /* eslint-disable @typescript-eslint/no-explicit-any*/\n pubSub: any,\n disableUserProfile?: boolean,\n renderUserProfile?(): JSX.Element,\n imageCompression?: {\n compressionRate?: number,\n resizingWidth?: number | string,\n resizingHeight?: number | string,\n },\n };\n}\n\nexport const OpenchannelConversation = (props: Props): JSX.Element => {\n const {\n // internal props\n stores,\n config,\n // normal props\n useMessageGrouping,\n channelUrl,\n queries = {},\n disableUserProfile,\n fetchingParticipants = false, // We didn't decide to support fetching participant list\n renderCustomMessage,\n renderUserProfile,\n renderChannelTitle,\n renderMessageInput,\n onBeforeSendUserMessage,\n onBeforeSendFileMessage,\n onChatHeaderActionClick\n } = props;\n\n const {\n sdkStore,\n userStore,\n } = stores;\n const {\n userId,\n isOnline,\n logger,\n pubSub,\n imageCompression,\n } = config;\n\n const {\n sdk\n } = sdkStore;\n const {\n user\n } = userStore;\n\n // hook variables\n const [messagesStore, messagesDispatcher] = useReducer(messagesReducer, messagesInitialState);\n const {\n allMessages,\n loading,\n initialized,\n currentOpenChannel,\n isInvalid,\n hasMore,\n lastMessageTimestamp,\n operators,\n bannedParticipantIds,\n mutedParticipantIds,\n } = messagesStore;\n // ref\n const messageInputRef = useRef(null); // useSendMessageCallback\n const conversationScrollRef = useRef(null); // useScrollAfterSendMessageCallback\n const { stringSet } = useContext(LocalizationContext);\n\n // const\n const sdkInit = sdkStore.initialized;\n const userFilledMessageListParams = queries ? queries.messageListParams: null;\n const disabled = !initialized\n || !isOnline\n || utils.isDisabledBecauseFrozen(currentOpenChannel, userId);\n // || utils.isDisabledBecauseMuted(mutedParticipantIds, userId)\n const userDefinedDisableUserProfile = disableUserProfile || config.disableUserProfile;\n const userDefinedRenderProfile = renderUserProfile || config.renderUserProfile;\n\n // useMemo\n const amIBanned = useMemo(() => {\n return bannedParticipantIds.indexOf(user.userId) >= 0;\n }, [channelUrl, bannedParticipantIds, user]);\n const amIMuted = useMemo(() => {\n return mutedParticipantIds.indexOf(user.userId) >= 0;\n }, [channelUrl, mutedParticipantIds, user]);\n const amIOperator = useMemo(() => {\n return operators.map(operator => operator.userId).indexOf(user.userId) >= 0;\n }, [channelUrl, operators, user]);\n\n // use hooks\n useSetChannel(\n { channelUrl, sdkInit, fetchingParticipants },\n { sdk, logger, messagesDispatcher },\n );\n const checkScrollBottom = useCheckScrollBottom(\n { conversationScrollRef },\n { logger },\n );\n useHandleChannelEvents(\n { currentOpenChannel, checkScrollBottom },\n { sdk, logger, messagesDispatcher },\n );\n useInitialMessagesFetch(\n { currentOpenChannel, userFilledMessageListParams },\n { sdk, logger, messagesDispatcher },\n );\n const onScroll = useScrollCallback(\n { currentOpenChannel, lastMessageTimestamp },\n { sdk, logger, messagesDispatcher, hasMore, userFilledMessageListParams },\n );\n const handleSendMessage = useSendMessageCallback(\n { currentOpenChannel, onBeforeSendUserMessage, checkScrollBottom, messageInputRef },\n { sdk, logger, messagesDispatcher },\n );\n const handleFileUpload = useFileUploadCallback(\n { currentOpenChannel, onBeforeSendFileMessage, checkScrollBottom, imageCompression },\n { sdk, logger, messagesDispatcher },\n );\n const updateMessage = useUpdateMessageCallback(\n { currentOpenChannel, onBeforeSendUserMessage },\n { sdk, logger, messagesDispatcher },\n );\n const deleteMessage = useDeleteMessageCallback(\n { currentOpenChannel },\n { logger, messagesDispatcher },\n );\n const resendMessage = useResendMessageCallback(\n { currentOpenChannel },\n { logger, messagesDispatcher },\n );\n\n // handle API calls from withSendbird\n useEffect(() => {\n const subscriber = new Map();\n if (!pubSub || !pubSub.subscribe) {\n return;\n }\n subscriber.set(topics.SEND_USER_MESSAGE, pubSub.subscribe(topics.SEND_USER_MESSAGE, (msg) => {\n const { channel, message } = msg;\n scrollIntoLast();\n if (channel && (channelUrl === channel.url)) {\n messagesDispatcher({\n type: messageActionTypes.SENDING_MESSAGE_SUCCEEDED,\n payload: message,\n });\n }\n }));\n subscriber.set(topics.SEND_MESSAGE_START, pubSub.subscribe(topics.SEND_MESSAGE_START, (msg) => {\n const { channel, message } = msg;\n if (channel && (channelUrl === channel.url)) {\n messagesDispatcher({\n type: messageActionTypes.SENDING_MESSAGE_START,\n payload: message,\n });\n }\n }));\n subscriber.set(topics.SEND_FILE_MESSAGE, pubSub.subscribe(topics.SEND_FILE_MESSAGE, (msg) => {\n const { channel, message } = msg;\n scrollIntoLast();\n if (channel && (channelUrl === channel.url)) {\n messagesDispatcher({\n type: messageActionTypes.SENDING_MESSAGE_SUCCEEDED,\n payload: message,\n });\n }\n }));\n subscriber.set(topics.UPDATE_USER_MESSAGE, pubSub.subscribe(topics.UPDATE_USER_MESSAGE, (msg) => {\n const { channel, message, fromSelector } = msg;\n if (fromSelector && channel && (channelUrl === channel.url)) {\n messagesDispatcher({\n type: messageActionTypes.ON_MESSAGE_UPDATED,\n payload: { channel, message },\n });\n }\n }));\n subscriber.set(topics.DELETE_MESSAGE, pubSub.subscribe(topics.DELETE_MESSAGE, (msg) => {\n const { channel, messageId } = msg;\n if (channel && (channelUrl === channel.url)) {\n messagesDispatcher({\n type: messageActionTypes.ON_MESSAGE_DELETED,\n payload: messageId,\n });\n }\n }));\n\n return () => {\n if (subscriber) {\n subscriber.forEach((s) => {\n try {\n s.remove();\n } catch {\n //\n }\n });\n }\n };\n }, [channelUrl, sdkInit]);\n\n if (\n !currentOpenChannel\n || !currentOpenChannel.url\n || amIBanned\n ) {\n return (<div className={COMPONENT_CLASS_NAME}><PlaceHolder type={PlaceHolderTypes.NO_CHANNELS} /></div>);\n }\n if (loading) {\n return (<div className={COMPONENT_CLASS_NAME}><PlaceHolder type={PlaceHolderTypes.LOADING} /></div>);\n }\n if (isInvalid) {\n return (<div className={COMPONENT_CLASS_NAME}><PlaceHolder type={PlaceHolderTypes.WRONG} /></div>);\n }\n\n return (\n <UserProfileProvider\n className={COMPONENT_CLASS_NAME}\n disableUserProfile={userDefinedDisableUserProfile}\n renderUserProfile={userDefinedRenderProfile}\n >\n {\n renderChannelTitle\n ? renderChannelTitle({\n channel: currentOpenChannel,\n user: user,\n })\n : (\n <OpenchannelConversationHeader\n title={currentOpenChannel.name}\n subTitle={`${utils.kFormatter(currentOpenChannel.participantCount)} ${stringSet.OPEN_CHANNEL_CONVERSATION__TITLE_PARTICIPANTS}`}\n coverImage={currentOpenChannel.coverUrl}\n onActionClick={onChatHeaderActionClick}\n amIOperator={amIOperator}\n />\n )\n }\n {\n currentOpenChannel.isFrozen && (\n <FrozenChannelNotification />\n )\n }\n <OpenchannelConversationScroll\n ref={conversationScrollRef}\n renderCustomMessage={renderCustomMessage}\n openchannel={currentOpenChannel}\n user={user}\n useMessageGrouping={useMessageGrouping}\n isOnline={isOnline}\n allMessages={allMessages}\n onScroll={onScroll}\n hasMore={hasMore}\n updateMessage={updateMessage}\n deleteMessage={deleteMessage}\n resendMessage={resendMessage}\n />\n {\n renderMessageInput\n ? (\n renderMessageInput({\n channel: currentOpenChannel,\n user: user,\n disabled: disabled,\n })\n )\n : (\n <MessageInputWrapper\n channel={currentOpenChannel}\n user={user}\n ref={messageInputRef}\n disabled={disabled || amIMuted}\n onSendMessage={handleSendMessage}\n onFileUpload={handleFileUpload}\n renderMessageInput={renderMessageInput}\n />\n )\n }\n </UserProfileProvider>\n );\n};\n\nexport default withSendbirdContext(OpenchannelConversation);\n"],"names":["getMessageCreatedAt","message","format","createdAt","scrollIntoLast","intialTry","MAX_TRIES","currentTry","scrollDOM","document","querySelector","scrollTop","scrollHeight","error","setTimeout","isSameGroup","comparingMessage","messageType","sender","userId","sendingStatus","compareMessagesForGrouping","prevMessage","currMessage","nextMessage","kFormatter","num","Math","abs","toFixed","isOperator","openChannel","operators","map","operator","indexOf","isDisabledBecauseFrozen","isFrozen","fetchWithListQuery","listQuery","logger","eachQueryNextCallback","fetchList","query","hasNext","next","users","warning","info","pxToNumber","px","parsed","Number","parseFloat","isNaN","MessageInputWrapper","_a","ref","channel","user","disabled","onSendMessage","onFileUpload","renderMessageInput","stringSet","useContext","LocalizationContext","React","CHANNEL__MESSAGE_INPUT__PLACE_HOLDER__DISABLED","forwardRef","FrozenNotification","LabelTypography","CAPTION_2","CHANNEL_FROZEN","OpenchannelConversationHeader","coverImage","title","subTitle","amIOperator","onActionClick","width","height","IconTypes","CHANNELS","IconColors","CONTENT","H_2","LabelColors","ONBACKGROUND_1","NO_TITLE","BODY_2","ONBACKGROUND_2","INFO","MEMBERS","PRIMARY","copyToClipboard","text","window","clipboardData","setData","queryCommandSupported","textarea","createElement","textContent","style","position","body","appendChild","select","execCommand","ex","removeChild","OpenChannelMessageStatusTypes","NONE","PENDING","FAILED","CANCELED","SUCCEEDED","getSenderFromMessage","_sender","checkIsSent","status","checkIsPending","checkIsFailed","checkIsByMe","isFineCopy","length","isFineResend","isResendable","isFineEdit","isFineDelete","showMenuTrigger","props","OpenchannelUserMessage","className","resendMessage","showEdit","showRemove","chainTop","_b","UserProfileContext","disableUserProfile","renderUserProfile","messageRef","useRef","avatarRef","contextMenuRef","_c","useState","contextStyle","setContextStyle","isByMe","isPending","isFailed","MemoizedMessageText","useMemo","splitMessage","split","matchedMessage","word","updatedAt","push","uuidv4","BODY_1","MESSAGE_EDITED","useEffect","current","clientHeight","top","innerWidth","__spreadArray","Array","isArray","join","toggleDropdown","profileUrl","closeDropdown","paddingTop","paddingBottom","close","UserProfile","SECONDARY_3","friendName","nickname","CAPTION_3","ONBACKGROUND_3","SPINNER","ERROR","MORE","CONTENT_INVERSE","CONTEXT_MENU_DROPDOWN__COPY","CONTEXT_MENU_DROPDOWN__EDIT","CONTEXT_MENU_DROPDOWN__RESEND","CONTEXT_MENU_DROPDOWN__DELETE","OpenChannelAdminMessage","URL_REG","createUrlTester","regexp","test","checkOGIsEnalbed","ogMetaData","url","OpenchannelOGMessage","defaultImage","messageComponentRef","isUrl","wordClassName","openLink","open","SUBTITLE_2","description","alt","THUMBNAIL_NONE","SUPPORTING_TYPES","IMAGE","VIDEO","UNSUPPORTED","SUPPORTED_MIMES","getSupportingFileType","type","OpenchannelThumbnailMessage","onClick","localUrl","thumbnails","thumbnailUrl","_d","messageWidth","setMessageWidth","memorizedThumbnailPlaceHolder","ON_BACKGROUND_2","isMessageSent","thumbnailWidth","clientWidth","PLAY","PHOTO","checkFileType","fileUrl","audioFile","gifFile","FILE_AUDIO","GIF","FILE_DOCUMENT","truncate","fullStr","strLen","undefined","separator","sepLen","charsToShow","frontChars","ceil","backChars","floor","substr","OpenchannelFileMessage","openFileUrl","name","RemoveMessageModal","onCloseModal","onDeleteMessage","MODAL__DELETE_MESSAGE__TITLE","MessageTypes","ADMIN","USER","FILE","THUMBNAIL","OG","UNKNOWN","SendingMessageStatus","getMessageType","isUserMessage","isAdminMessage","isImage","isVideo","MessageHoc","editDisabled","hasSeperator","renderCustomMessage","deleteMessage","updateMessage","chainBottom","RenderedMessage","setShowEdit","setShowRemove","_e","showFileViewer","setShowFileViewer","editMessageInputRef","requestState","messageId","OpenChannelFileMessage","OpenChannelOGMessage","OpenChannelThumbnailMessage","OpenChannelUserMessage","OpenchannelConversationScroll","useMessageGrouping","openchannel","allMessages","isOnline","hasMore","onScroll","scrollRef","showScrollDownButton","setShowScrollDownButton","handleOnScroll","e","element","target","navigator","userAgent","nodes","querySelectorAll","first_1","scrollIntoView","scrollToBottom","scrollTo","hasMessage","index","previousMessage","previousMessageCreatedAt","currentCreatedAt","isSameDay","PlaceHolderTypes","NO_MESSAGES","CHEVRON_DOWN","SET_CURRENT_CHANNEL","SET_CHANNEL_INVALID","RESET_MESSAGES","GET_PREV_MESSAGES_START","GET_PREV_MESSAGES_SUCESS","GET_PREV_MESSAGES_FAIL","SENDING_MESSAGE_FAILED","SENDING_MESSAGE_SUCCEEDED","SENDING_MESSAGE_START","RESENDING_MESSAGE_START","FETCH_PARTICIPANT_LIST","FETCH_BANNED_USER_LIST","FETCH_MUTED_USER_LIST","ON_MESSAGE_RECEIVED","ON_MESSAGE_UPDATED","ON_MESSAGE_DELETED","ON_MESSAGE_DELETED_BY_REQ_ID","ON_OPERATOR_UPDATED","ON_USER_ENTERED","ON_USER_EXITED","ON_USER_MUTED","ON_USER_UNMUTED","ON_USER_BANNED","ON_USER_UNBANNED","ON_CHANNEL_FROZEN","ON_CHANNEL_UNFROZEN","ON_CHANNEL_CHANGED","ON_META_DATA_CREATED","ON_META_DATA_UPDATED","ON_META_DATA_DELETED","ON_META_COUNTERS_CREATED","ON_META_COUNTERS_UPDATED","ON_META_COUNTERS_DELETED","ON_MENTION_RECEIVED","reducer","state","action","actionTypes","gottenChannel","payload","isInvalid","currentOpenChannel","participants","bannedParticipantIds","mutedParticipantIds","loading","messages","lastMessageTimestamp","actionChannelUrl","receivedMessages_1","_hasMore","_lastMessageTimestamp","stateChannel","stateChannelUrl","filteredAllMessages","filter","find","compareIds","initialized","sentMessage_1","newMessages","m","reqId","sentMessage_2","eventedChannel","resentMessage_1","fetchedParticipantList","fetchedBannedUserList","every","fetchedMutedUserList","receivedMessage","updatedMessage_1","currentChannel","isIdentical","deletedMessageId_1","updatedOperators","enteredUser","exitedUser_1","participant","mutedUser","unmutedUser_1","bannedUser","unbannedUser_1","frozenChannel","frozen","unfrozenChannel","changedChannel","initialState","useSetChannel","channelUrl","sdkInit","fetchingParticipants","sdk","messagesDispatcher","OpenChannel","getChannel","messageActionTypes","enter","_","participantListQuery","createParticipantListQuery","bannedParticipantListQuery","createBannedUserListQuery","mutedParticipantListQuery","createMutedUserListQuery","utils","useHandleChannelEvents","checkScrollBottom","messageReceiverId","ChannelHandler","onMessageReceived","scrollToEnd","onMessageUpdated","onMessageDeleted","onOperatorUpdated","onUserEntered","onUserExited","onUserMuted","onUserUnmuted","onUserBanned","onUserUnbanned","onChannelFrozen","onChannelUnfrozen","onChannelChanged","onMetaDataCreated","metaData","onMetaDataUpdated","onMetaDataDeleted","metaDataKeys","onMetaCountersCreated","metaCounter","onMetaCountersUpdated","onMetaCountersDeleted","metaCounterKeys","onMentionReceived","addChannelHandler","removeChannelHandler","useInitialMessagesFetch","userFilledMessageListParams","MessageListParams","getMessagesByTimestamp","messageListParams_1","prevResultSize","isInclusive","includeReplies","includeReactions","Object","keys","forEach","key","messageListParams","Date","getTime","useScrollCallback","useCallback","callback","hasMore_1","lastMessageTimestamp_1","useCheckScrollBottom","conversationScrollRef","isBottom","conversationScroll","useSendMessageCallback","onBeforeSendUserMessage","messageInputRef","UserMessageParams","value","createParamsDefault","txt","trim","toString","params","createCustomParams","isBottom_1","pendingMessage","sendUserMessage","useFileUploadCallback","imageCompression","onBeforeSendFileMessage","file","FileMessageParams","compressionRate_1","resizingWidth_1","resizingHeight_1","createCustomParams_1","compressibleFileType","compressibleRatio","compressibleDiamensions_1","canCompressImage","createParamsDefault_1","file_","image_1","src","URL","createObjectURL","onload","revokeObjectURL","canvas","imageWidth","naturalWidth","imageHeight","naturalHeight","targetWidth","targetHeight","context","getContext","drawImage","toBlob","newImageBlob","compressedFile","File","sendFileMessage","useUpdateMessageCallback","updateUserMessage","useDeleteMessageCallback","messageToDelete","useResendMessageCallback","failedMessage","resendUserMessage","resendFileMessage","console","COMPONENT_CLASS_NAME","OpenchannelConversation","stores","config","queries","renderChannelTitle","onChatHeaderActionClick","sdkStore","userStore","pubSub","useReducer","messagesReducer","messagesInitialState","messagesStore","userDefinedDisableUserProfile","userDefinedRenderProfile","amIBanned","amIMuted","handleSendMessage","handleFileUpload","subscriber","Map","subscribe","set","topics","msg","fromSelector","s","remove","NO_CHANNELS","LOADING","WRONG","participantCount","OPEN_CHANNEL_CONVERSATION__TITLE_PARTICIPANTS","coverUrl","FrozenChannelNotification","withSendbirdContext"],"mappings":"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"}