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 pathChannelList.js.map
1 lines (1 loc) · 106 KB
/
ChannelList.js.map
1
{"version":3,"file":"ChannelList.js","sources":["../src/smart-components/ChannelList/dux/actionTypes.js","../src/smart-components/ChannelList/dux/initialState.js","../src/smart-components/ChannelList/dux/reducers.js","../src/ui/ChannelPreview/utils.js","../src/ui/ChannelPreview/index.jsx","../src/ui/ChannelHeader/index.jsx","../src/ui/EditUserProfile/index.tsx","../src/smart-components/ChannelList/components/AddChannel.jsx","../src/smart-components/ChannelList/components/ChannelPreviewAction.jsx","../src/smart-components/ChannelList/components/Placeholder.jsx","../src/smart-components/ChannelList/utils.js","../src/smart-components/ChannelList/index.jsx"],"sourcesContent":["export const RESET_CHANNEL_LIST = 'RESET_CHANNEL_LIST';\nexport const CREATE_CHANNEL = 'CREATE_CHANNEL';\nexport const UNLOAD_CHANNELS = 'UNLOAD_CHANNELS';\nexport const SET_CHANNEL_LOADING = 'SET_CHANNEL_LOADING';\nexport const LEAVE_CHANNEL_SUCCESS = 'LEAVE_CHANNEL_SUCCESS';\n\nexport const SET_CURRENT_CHANNEL = 'SET_CURRENT_CHANNEL';\n\nexport const SHOW_CHANNEL_SETTINGS = 'SHOW_CHANNEL_SETTINGS';\nexport const HIDE_CHANNEL_SETTINGS = 'HIDE_CHANNEL_SETTINGS';\n\nexport const FETCH_CHANNELS_START = 'FETCH_CHANNELS_START';\nexport const FETCH_CHANNELS_SUCCESS = 'FETCH_CHANNELS_SUCCESS';\nexport const FETCH_CHANNELS_FAILURE = 'FETCH_CHANNELS_FAILURE';\n\nexport const INIT_CHANNELS_START = 'INIT_CHANNELS_START';\nexport const INIT_CHANNELS_SUCCESS = 'INIT_CHANNELS_SUCCESS';\nexport const INIT_CHANNELS_FAILURE = 'INIT_CHANNELS_FAILURE';\n\nexport const INVITE_MEMBERS_SUCESS = 'INVITE_MEMBERS_SUCESS';\n\nexport const ON_USER_JOINED = 'ON_USER_JOINED';\nexport const ON_CHANNEL_DELETED = 'ON_CHANNEL_DELETED';\nexport const ON_LAST_MESSAGE_UPDATED = 'ON_LAST_MESSAGE_UPDATED';\nexport const ON_USER_LEFT = 'ON_USER_LEFT';\nexport const ON_CHANNEL_CHANGED = 'ON_CHANNEL_CHANGED';\nexport const ON_CHANNEL_ARCHIVED = 'ON_CHANNEL_ARCHIVED';\nexport const ON_CHANNEL_FROZEN = 'ON_CHANNEL_FROZEN';\nexport const ON_CHANNEL_UNFROZEN = 'ON_CHANNEL_UNFROZEN';\n\nexport const ON_READ_RECEIPT_UPDATED = 'ON_READ_RECEIPT_UPDATED';\nexport const ON_DELIVERY_RECEIPT_UPDATED = 'ON_DELIVERY_RECEIPT_UPDATED';\n\nexport const CHANNEL_REPLACED_TO_TOP = 'CHANNEL_REPLACED_TO_TOP';\nexport const CHANNEL_LIST_PARAMS_UPDATED = 'CHANNEL_LIST_PARAMS_UPDATED';\n","export default {\n // we might not need this initialized state -> should remove\n initialized: false,\n loading: false,\n allChannels: [],\n currentChannel: null,\n showSettings: false,\n channelListQuery: null,\n currentUserId: '',\n};\n","import { filterChannelListParams, getChannelsWithUpsertedChannel } from '../../../utils';\nimport * as actions from './actionTypes';\nimport initialState from './initialState';\n\nexport default function reducer(state, action) {\n switch (action.type) {\n case actions.INIT_CHANNELS_START:\n return {\n ...state,\n loading: true,\n };\n case actions.RESET_CHANNEL_LIST:\n return initialState;\n case actions.INIT_CHANNELS_SUCCESS:\n return {\n ...state,\n initialized: true,\n loading: false,\n allChannels: action.payload,\n currentChannel: (action.payload && action.payload.length && action.payload.length > 0)\n ? action.payload[0].url\n : null,\n };\n case actions.FETCH_CHANNELS_SUCCESS: {\n const currentChannels = state.allChannels.map((c) => c.url);\n const filteredChannels = action.payload.filter(\n ({ url }) => !(currentChannels.find((c) => c === url)),\n );\n return {\n ...state,\n allChannels: [\n ...state.allChannels,\n ...filteredChannels,\n ],\n };\n }\n case actions.CREATE_CHANNEL: {\n const channel = action.payload;\n if (state.channelListQuery) {\n if (filterChannelListParams(state.channelListQuery, channel, state.currentUserId)) {\n return {\n ...state,\n ...getChannelsWithUpsertedChannel(state.allChannels, channel),\n };\n }\n return {\n ...state,\n currentChannel: channel.url,\n };\n }\n return {\n ...state,\n currentChannel: channel.url,\n allChannels: [channel, ...state.allChannels.filter((ch) => ch.url !== channel.url)],\n };\n }\n case actions.ON_CHANNEL_ARCHIVED: {\n const channel = action.payload;\n if (state.channelListQuery) {\n if (filterChannelListParams(state.channelListQuery, channel, state.currentUserId)) {\n return {\n ...state,\n allChannels: getChannelsWithUpsertedChannel(state.allChannels, channel),\n };\n }\n }\n return {\n ...state,\n currentChannel: (channel.url === state.currentChannel)\n ? state.allChannels[state.allChannels[0].url === channel.url ? 1 : 0].url\n : state.currentChannel,\n allChannels: state.allChannels.filter(({ url }) => url !== channel.url),\n };\n }\n case actions.LEAVE_CHANNEL_SUCCESS:\n case actions.ON_CHANNEL_DELETED: {\n const channelUrl = action.payload;\n return {\n ...state,\n currentChannel: (channelUrl === state.currentChannel)\n ? state.allChannels[0].url\n : state.currentChannel,\n allChannels: state.allChannels.filter(({ url }) => url !== channelUrl),\n };\n }\n case actions.ON_USER_LEFT: {\n const { channel, isMe } = action.payload;\n if (state.channelListQuery) {\n if (filterChannelListParams(state.channelListQuery, channel, state.currentUserId)) {\n const filteredChannels = getChannelsWithUpsertedChannel(state.allChannels, channel);\n return {\n ...state,\n currentChannel: (isMe && (channel.url === state.currentChannel))\n ? filteredChannels[0].url\n : state.currentChannel,\n allChannels: filteredChannels,\n };\n }\n return {\n ...state,\n currentChannel: (channel.url === state.currentChannel)\n ? state.allChannels[0].url\n : state.currentChannel,\n allChannels: state.allChannels.filter(({ url }) => url !== channel.url),\n };\n }\n const filteredChannels = state.allChannels.filter((c) => c.url !== channel.url);\n return {\n ...state,\n currentChannel: (isMe && (channel.url === state.currentChannel))\n ? filteredChannels[0].url\n : state.currentChannel,\n allChannels: filteredChannels,\n };\n }\n case actions.ON_USER_JOINED:\n case actions.ON_CHANNEL_CHANGED:\n case actions.ON_READ_RECEIPT_UPDATED:\n case actions.ON_DELIVERY_RECEIPT_UPDATED: {\n const { allChannels = [] } = state;\n const channel = action.payload;\n const { unreadMessageCount } = channel;\n if (!channel.lastMessage) return state;\n if (state.channelListQuery) {\n if (filterChannelListParams(state.channelListQuery, channel, state.currentUserId)) {\n // if its only an unread message count change, dont push to top\n if (unreadMessageCount === 0) {\n const currentChannel = allChannels.find(({ url }) => url === channel.url);\n const currentUnreadCount = currentChannel && currentChannel.unreadMessageCount;\n if (currentUnreadCount === 0) {\n return {\n ...state,\n allChannels: getChannelsWithUpsertedChannel(allChannels, channel),\n };\n }\n }\n }\n return {\n ...state,\n currentChannel: (channel.url === state.currentChannel)\n ? state.allChannels[state.allChannels[0].url === channel.url ? 1 : 0].url\n // if coming channel is first of channel list, current channel will be the next one\n : state.currentChannel,\n allChannels: state.allChannels.filter(({ url }) => url !== channel.url),\n };\n }\n // if its only an unread message count change, dont push to top\n if (unreadMessageCount === 0) {\n const currentChannel = allChannels.find(({ url }) => url === channel.url);\n const currentUnreadCount = currentChannel && currentChannel.unreadMessageCount;\n if (currentUnreadCount === 0) {\n return {\n ...state,\n allChannels: state.allChannels.map((ch) => (ch.url === channel.url ? channel : ch)),\n };\n }\n }\n return {\n ...state,\n allChannels: [\n channel,\n ...state.allChannels.filter(({ url }) => url !== action.payload.url),\n ],\n };\n }\n case actions.SET_CURRENT_CHANNEL:\n return {\n ...state,\n currentChannel: action.payload,\n };\n case actions.SHOW_CHANNEL_SETTINGS:\n return {\n ...state,\n showSettings: true,\n };\n case actions.HIDE_CHANNEL_SETTINGS:\n return {\n ...state,\n showSettings: false,\n };\n case actions.ON_LAST_MESSAGE_UPDATED:\n return {\n ...state,\n allChannels: state.allChannels.map((channel) => (\n channel.url === action.payload.url ? action.payload : channel)),\n };\n case actions.ON_CHANNEL_FROZEN: {\n const channel = action.payload;\n if (state.channelListQuery) {\n if (filterChannelListParams(state.channelListQuery, channel, state.currentUserId)) {\n return {\n ...state,\n allChannels: getChannelsWithUpsertedChannel(state.allChannels, channel),\n };\n }\n return {\n ...state,\n currentChannel: (channel.url === state.currentChannel)\n ? state.allChannels[state.allChannels[0].url === channel.url ? 1 : 0].url\n // if coming channel is first of channel list, current channel will be the next one\n : state.currentChannel,\n allChannels: state.allChannels.filter(({ url }) => url !== channel.url),\n };\n }\n return {\n ...state,\n allChannels: state.allChannels.map((ch) => {\n if (ch.url === channel.url) {\n // eslint-disable-next-line no-param-reassign\n ch.isFrozen = true;\n return ch;\n }\n return ch;\n }),\n };\n }\n case actions.ON_CHANNEL_UNFROZEN: {\n const channel = action.payload;\n if (state.channelListQuery) {\n if (filterChannelListParams(state.channelListQuery, channel, state.currentUserId)) {\n return {\n ...state,\n allChannels: getChannelsWithUpsertedChannel(state.allChannels, channel),\n };\n }\n return {\n ...state,\n currentChannel: (channel.url === state.currentChannel)\n ? state.allChannels[state.allChannels[0].url === channel.url ? 1 : 0].url\n // if coming channel is first of channel list, current channel will be the next one\n : state.currentChannel,\n allChannels: state.allChannels.filter(({ url }) => url !== channel.url),\n };\n }\n return {\n ...state,\n allChannels: state.allChannels.map((ch) => {\n if (ch.url === channel.url) {\n // eslint-disable-next-line no-param-reassign\n ch.isFrozen = false;\n return ch;\n }\n return ch;\n }),\n };\n }\n case actions.CHANNEL_REPLACED_TO_TOP: {\n return {\n ...state,\n allChannels: [\n action.payload,\n ...state.allChannels.filter((channel) => channel.url !== action.payload.url),\n ],\n };\n }\n case actions.CHANNEL_LIST_PARAMS_UPDATED:\n return {\n ...state,\n currentUserId: action.payload.currentUserId,\n channelListQuery: action.payload.channelListQuery,\n };\n default:\n return state;\n }\n}\n","import isToday from 'date-fns/isToday';\nimport format from 'date-fns/format';\nimport isYesterday from 'date-fns/isYesterday';\n\nimport { truncate } from '../FileMessage/utils';\nimport { LabelStringSet } from '../Label';\n\nexport const getChannelTitle = (channel = {}, currentUserId, stringSet = LabelStringSet) => {\n if (!channel || (!channel.name && !channel.members)) {\n return stringSet.NO_TITLE;\n }\n if (channel.name && channel.name !== 'Group Channel') {\n return channel.name;\n }\n if (channel.members.length === 1) {\n return stringSet.NO_MEMBERS;\n }\n\n return channel.members\n .filter(({ userId }) => userId !== currentUserId)\n .map(({ nickname }) => (nickname || stringSet.NO_NAME))\n .join(', ');\n};\n\nexport const getLastMessageCreatedAt = (channel) => {\n if (!channel || !channel.lastMessage) {\n return '';\n }\n const date = channel.lastMessage.createdAt;\n if (isToday(date)) {\n return format(date, 'p');\n }\n\n if (isYesterday(date)) {\n return 'Yesterday';\n }\n\n return format(date, 'MMM dd');\n};\n\nexport const getTotalMembers = (channel) => (\n channel && channel.memberCount\n ? channel.memberCount\n : 0\n);\n\nconst getPrettyLastMessage = (message = {}) => {\n const MAXLEN = 30;\n const { messageType, name } = message;\n if (messageType === 'file') {\n return truncate(name, MAXLEN);\n }\n return message.message;\n};\n\nexport const getLastMessage = (channel) => (\n channel && channel.lastMessage\n ? getPrettyLastMessage(channel.lastMessage)\n : ''\n);\n\nexport const getChannelUnreadMessageCount = (channel) => (\n (channel && channel.unreadMessageCount)\n ? channel.unreadMessageCount\n : 0\n);\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\n\nimport ChannelAvatar from '../ChannelAvatar/index';\nimport Badge from '../Badge';\nimport Icon, { IconColors, IconTypes } from '../Icon';\nimport Label, { LabelTypography, LabelColors } from '../Label';\nimport { LocalizationContext } from '../../lib/LocalizationContext';\n\nimport * as utils from './utils';\n\nexport default function ChannelPreview({\n channel,\n currentUser,\n isActive,\n ChannelAction,\n theme,\n onClick,\n tabIndex,\n}) {\n const {\n userId,\n } = currentUser;\n const { isBroadcast, isFrozen } = channel;\n const { stringSet } = useContext(LocalizationContext);\n return (\n <div\n className={[\n 'sendbird-channel-preview',\n isActive ? 'sendbird-channel-preview--active' : '',\n ].join(' ')}\n role=\"link\"\n onClick={onClick}\n onKeyPress={onClick}\n tabIndex={tabIndex}\n >\n <div\n className=\"sendbird-channel-preview__avatar\"\n >\n <ChannelAvatar\n channel={channel}\n userId={userId}\n theme={theme}\n />\n </div>\n <div className=\"sendbird-channel-preview__content\">\n <div className=\"sendbird-channel-preview__content__upper\">\n <div className=\"sendbird-channel-preview__content__upper__header\">\n {\n isBroadcast\n && (\n <div className=\"sendbird-channel-preview__content__upper__header__broadcast-icon\">\n <Icon\n type={IconTypes.BROADCAST}\n fillColor={IconColors.SECONDARY}\n height=\"16px\"\n width=\"16px\"\n />\n </div>\n )\n }\n <Label\n className=\"sendbird-channel-preview__content__upper__header__channel-name\"\n type={LabelTypography.SUBTITLE_2}\n color={LabelColors.ONBACKGROUND_1}\n >\n {utils.getChannelTitle(channel, userId, stringSet)}\n </Label>\n <Label\n className=\"sendbird-channel-preview__content__upper__header__total-members\"\n type={LabelTypography.CAPTION_2}\n color={LabelColors.ONBACKGROUND_2}\n >\n {utils.getTotalMembers(channel)}\n </Label>\n {\n isFrozen\n && (\n <div title=\"Frozen\" className=\"sendbird-channel-preview__content__upper__header__frozen-icon\">\n <Icon\n type={IconTypes.FREEZE}\n fillColor={IconColors.PRIMARY}\n height={12}\n width={12}\n />\n </div>\n )\n }\n </div>\n <Label\n className=\"sendbird-channel-preview__content__upper__last-message-at\"\n type={LabelTypography.CAPTION_3}\n color={LabelColors.ONBACKGROUND_2}\n >\n {utils.getLastMessageCreatedAt(channel)}\n </Label>\n </div>\n <div className=\"sendbird-channel-preview__content__lower\">\n <Label\n className=\"sendbird-channel-preview__content__lower__last-message\"\n type={LabelTypography.BODY_2}\n color={LabelColors.ONBACKGROUND_3}\n >\n {utils.getLastMessage(channel)}\n </Label>\n <div className=\"sendbird-channel-preview__content__lower__unread-message-count\">\n {\n utils.getChannelUnreadMessageCount(channel) // return number\n ? <Badge count={utils.getChannelUnreadMessageCount(channel)} />\n : null\n }\n </div>\n </div>\n </div>\n <div\n className=\"sendbird-channel-preview__action\"\n >\n {ChannelAction}\n </div>\n </div>\n );\n}\n\nChannelPreview.propTypes = {\n channel: PropTypes.shape({\n members: PropTypes.arrayOf(PropTypes.shape({})),\n coverUrl: PropTypes.string,\n isBroadcast: PropTypes.bool,\n isFrozen: PropTypes.bool,\n }),\n currentUser: PropTypes.shape({\n userId: PropTypes.string,\n }),\n isActive: PropTypes.bool,\n ChannelAction: PropTypes.element.isRequired,\n theme: PropTypes.string,\n onClick: PropTypes.func,\n tabIndex: PropTypes.number,\n};\n\nChannelPreview.defaultProps = {\n channel: {},\n currentUser: {},\n isActive: false,\n theme: 'light',\n onClick: () => { },\n tabIndex: 0,\n};\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { LocalizationContext } from '../../lib/LocalizationContext';\nimport Label, { LabelTypography, LabelColors } from '../Label';\nimport IconButton from '../IconButton';\n\nimport './index.scss';\nimport Avatar from '../Avatar/index';\n\nexport default function ChannelHeader({\n user,\n renderHeader,\n iconButton,\n onEdit,\n allowProfileEdit,\n}) {\n const { stringSet } = useContext(LocalizationContext);\n return (\n <div\n className={[\n 'sendbird-channel-header',\n allowProfileEdit ? 'sendbird-channel-header--allow-edit' : '',\n ].join(' ')}\n >\n {\n renderHeader\n ? renderHeader()\n : (\n <div\n className=\"sendbird-channel-header__title\"\n role=\"button\"\n onClick={onEdit}\n onKeyDown={onEdit}\n tabIndex=\"0\"\n >\n <div className=\"sendbird-channel-header__title__left\">\n <Avatar\n width=\"32px\"\n height=\"32px\"\n src={user.profileUrl}\n alt={user.nickname}\n />\n </div>\n <div className=\"sendbird-channel-header__title__right\">\n <Label\n className=\"sendbird-channel-header__title__right__name\"\n type={LabelTypography.SUBTITLE_2}\n color={LabelColors.ONBACKGROUND_1}\n >\n {user.nickname || stringSet.NO_NAME}\n </Label>\n <Label\n className=\"sendbird-channel-header__title__right__user-id\"\n type={LabelTypography.BODY_2}\n color={LabelColors.ONBACKGROUND_2}\n >\n {user.userId}\n </Label>\n </div>\n </div>\n )\n }\n <div className=\"sendbird-channel-header__right-icon\">\n {iconButton}\n </div>\n </div>\n );\n}\n\nChannelHeader.propTypes = {\n user: PropTypes.shape({\n profileUrl: PropTypes.string,\n nickname: PropTypes.string,\n userId: PropTypes.string,\n }),\n renderHeader: PropTypes.func,\n iconButton: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.instanceOf(IconButton),\n ]),\n onEdit: PropTypes.func.isRequired,\n allowProfileEdit: PropTypes.bool,\n};\n\nChannelHeader.defaultProps = {\n user: {},\n renderHeader: null,\n iconButton: null,\n allowProfileEdit: false,\n};\n","import React, {\n ReactElement,\n useRef,\n useState,\n useContext,\n} from 'react';\nimport './index.scss';\n\nimport Modal from '../Modal';\nimport withSendbirdContext from '../../lib/SendbirdSdkContext';\nimport { LocalizationContext } from '../../lib/LocalizationContext';\n\nimport Input, { InputLabel } from '../Input';\nimport Avatar from '../Avatar';\nimport Icon, { IconTypes } from '../Icon';\nimport { Type as ButtonType } from '../Button/type';\nimport Label, { LabelColors, LabelTypography } from '../Label';\nimport TextButton from '../TextButton';\nimport { SendbirdTypes } from '../../types';\nimport { noop } from '../../utils/utils';\n\ninterface Props {\n user: SendbirdTypes['User'];\n theme?: string;\n onCancel(): void;\n onSubmit(newFile: File, newNickname: string): void;\n changeTheme?(theme: string): void;\n onThemeChange?(theme: string): void;\n}\n\nexport function EditUserProfile({\n user,\n theme = 'light',\n onCancel,\n onSubmit,\n changeTheme = noop,\n onThemeChange = null,\n}: Props): ReactElement {\n const hiddenInputRef = useRef(null);\n const inputRef = useRef(null);\n const formRef = useRef(null);\n const { stringSet } = useContext(LocalizationContext);\n const [currentImg, setCurrentImg] = useState(null);\n const [newFile, setNewFile] = useState(null);\n\n return (\n <Modal\n titleText={stringSet.EDIT_PROFILE__TITLE}\n submitText={stringSet.BUTTON__SAVE}\n type={ButtonType.PRIMARY}\n onCancel={onCancel}\n onSubmit={() => {\n if (user.nickname !== '' && !inputRef.current.value) {\n if (formRef.current.reportValidity) { // might not work in explorer\n formRef.current.reportValidity();\n }\n return;\n }\n onSubmit(inputRef.current.value, newFile);\n onCancel();\n }}\n >\n <form\n className=\"sendbird-edit-user-profile\"\n ref={formRef}\n onSubmit={(e) => { e.preventDefault(); }}\n >\n <section className=\"sendbird-edit-user-profile__img\">\n <InputLabel>\n {stringSet.EDIT_PROFILE__IMAGE_LABEL}\n </InputLabel>\n <div className=\"sendbird-edit-user-profile__img__avatar\">\n <Avatar\n width=\"80px\"\n height=\"80px\"\n src={currentImg || user.profileUrl}\n />\n </div>\n <input\n ref={hiddenInputRef}\n type=\"file\"\n accept=\"image/gif, image/jpeg, image/png\"\n style={{ display: 'none' }}\n onChange={(e) => {\n setCurrentImg(URL.createObjectURL(e.target.files[0]));\n setNewFile(e.target.files[0]);\n hiddenInputRef.current.value = '';\n }}\n />\n <TextButton\n className=\"sendbird-edit-user-profile__img__avatar-button\"\n notUnderline\n onClick={() => hiddenInputRef.current.click()}\n >\n <Label type={LabelTypography.BUTTON_1} color={LabelColors.PRIMARY}>\n {stringSet.EDIT_PROFILE__IMAGE_UPLOAD}\n </Label>\n </TextButton>\n </section>\n <section className=\"sendbird-edit-user-profile__name\">\n <InputLabel>\n {stringSet.EDIT_PROFILE__NICKNAME_LABEL}\n </InputLabel>\n <Input\n required={user.nickname !== ''}\n name=\"sendbird-edit-user-profile__name__input\"\n ref={inputRef}\n value={user.nickname}\n placeHolder={stringSet.EDIT_PROFILE__NICKNAME_PLACEHOLDER}\n />\n </section>\n <section className=\"sendbird-edit-user-profile__userid\">\n <InputLabel>\n {/* userID */}\n {stringSet.EDIT_PROFILE__USERID_LABEL}\n </InputLabel>\n <Input\n disabled\n name=\"sendbird-edit-user-profile__userid__input\"\n value={user.userId}\n />\n </section>\n <section className=\"sendbird-edit-user-profile__theme\">\n <InputLabel>\n {stringSet.EDIT_PROFILE__THEME_LABEL}\n </InputLabel>\n <div className=\"sendbird-edit-user-profile__theme__theme-icon\">\n {\n theme === 'dark'\n ? (\n <Icon\n onClick={() => {\n changeTheme('light');\n if (onThemeChange && typeof onThemeChange === 'function') {\n onThemeChange('light');\n }\n }}\n type={IconTypes.TOGGLE_ON}\n width={44}\n height={24}\n />\n )\n : (\n <Icon\n onClick={() => {\n changeTheme('dark');\n if (onThemeChange && typeof onThemeChange === 'function') {\n onThemeChange('dark');\n }\n }}\n type={IconTypes.TOGGLE_OFF}\n width={44}\n height={24}\n />\n )\n }\n </div>\n </section>\n </form>\n </Modal>\n );\n}\n\nconst mapStoreToProps = (store) => {\n return {\n theme: store.config.theme,\n changeTheme: store.config.setCurrenttheme,\n };\n};\n\ninterface ConnectedEditUserProfileProps {\n user: SendbirdTypes['User'];\n onCancel(): void;\n onSubmit(newFile: File, newNickname: string): void;\n onThemeChange?(theme: string): void;\n}\n\nconst ConnectedEditUserProfile: (\n props: ConnectedEditUserProfileProps\n) => React.Component = withSendbirdContext(EditUserProfile, mapStoreToProps);\n\nexport default ConnectedEditUserProfile;\n","import './add-channel.scss';\n\nimport React, { useState, useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { LocalizationContext } from '../../../lib/LocalizationContext';\nimport IconButton from '../../../ui/IconButton';\nimport Label, { LabelColors, LabelTypography } from '../../../ui/Label';\nimport Icon, { IconTypes, IconColors } from '../../../ui/Icon';\nimport InviteMembers from '../../InviteMembers';\n\nimport {\n createChannel,\n createDefaultUserListQuery,\n isBroadcastChannelEnabled,\n isSuperGroupChannelEnabled,\n} from './utils';\nimport { CREATE_CHANNEL } from '../dux/actionTypes';\nimport Modal from '../../../ui/Modal';\n\nexport default function AddChannel({\n sdk,\n disabled,\n channelListDispatcher,\n onBeforeCreateChannel,\n userId,\n userFilledApplicationUserListQuery,\n userListQuery,\n}) {\n const [showModal, setShowModal] = useState(false);\n const [step, setStep] = useState(0);\n const [type, setType] = useState('group');\n const { stringSet } = useContext(LocalizationContext);\n\n if (!sdk || !sdk.createApplicationUserListQuery) {\n return null;\n }\n\n const isBroadcastAvailable = isBroadcastChannelEnabled(sdk);\n const isSupergroupAvailable = isSuperGroupChannelEnabled(sdk);\n\n return (\n <>\n <IconButton\n height=\"32px\"\n width=\"32px\"\n onClick={() => {\n setShowModal(true);\n }}\n disabled={disabled}\n >\n <Icon\n type={IconTypes.CREATE}\n fillColor={IconColors.PRIMARY}\n width=\"24px\"\n height=\"24px\"\n />\n </IconButton>\n {\n showModal && step === 0 && (\n <Modal\n titleText=\"New channel\"\n hideFooter\n onCancel={() => { setShowModal(false); }}\n onSubmit={() => {}}\n >\n <div className=\"sendbird-add-channel__rectangle-wrap\">\n <div\n className=\"sendbird-add-channel__rectangle\"\n onClick={() => {\n setType('group');\n setStep(1);\n }}\n role=\"button\"\n tabIndex={0}\n onKeyDown={() => {\n setType('group');\n setStep(1);\n }}\n >\n <Icon\n className=\"sendbird-add-channel__rectangle__chat-icon\"\n type={IconTypes.CHAT}\n fillColor={IconColors.PRIMARY}\n width=\"28px\"\n height=\"28px\"\n />\n <Label type={LabelTypography.SUBTITLE_1} color={LabelColors.ONBACKGROUND_1}>\n Group\n </Label>\n </div>\n {\n isSupergroupAvailable && (\n <div\n className=\"sendbird-add-channel__rectangle\"\n onClick={() => {\n setType('supergroup');\n setStep(1);\n }}\n role=\"button\"\n tabIndex={0}\n onKeyDown={() => {\n setType('supergroup');\n setStep(1);\n }}\n >\n <Icon\n className=\"sendbird-add-channel__rectangle__supergroup-icon\"\n type={IconTypes.SUPERGROUP}\n fillColor={IconColors.PRIMARY}\n width=\"28px\"\n height=\"28px\"\n />\n <Label type={LabelTypography.SUBTITLE_1} color={LabelColors.ONBACKGROUND_1}>\n Super group\n </Label>\n </div>\n )\n }\n {\n isBroadcastAvailable && (\n <div\n className=\"sendbird-add-channel__rectangle\"\n onClick={() => {\n setType('broadcast');\n setStep(1);\n }}\n role=\"button\"\n tabIndex={0}\n onKeyDown={() => {\n setType('broadcast');\n setStep(1);\n }}\n >\n <Icon\n className=\"sendbird-add-channel__rectangle__broadcast-icon\"\n type={IconTypes.BROADCAST}\n fillColor={IconColors.PRIMARY}\n width=\"28px\"\n height=\"28px\"\n />\n <Label type={LabelTypography.SUBTITLE_1} color={LabelColors.ONBACKGROUND_1}>\n Broadcast\n </Label>\n </div>\n )\n }\n </div>\n </Modal>\n )\n }\n {\n showModal && step === 1 && (\n <InviteMembers\n swapParams={\n sdk && sdk.getErrorFirstCallback && sdk.getErrorFirstCallback()\n }\n titleText={stringSet.MODAL__CREATE_CHANNEL__TITLE}\n submitText={stringSet.BUTTON__CREATE}\n closeModal={() => {\n setStep(0);\n setShowModal(false);\n }}\n idsToFilter={[userId]}\n userQueryCreator={() => ((userListQuery && typeof userListQuery === 'function')\n ? userListQuery()\n : createDefaultUserListQuery({ sdk, userFilledApplicationUserListQuery })\n )}\n onSubmit={(selectedUsers) => createChannel(\n sdk,\n selectedUsers,\n onBeforeCreateChannel,\n userId,\n type,\n ).then((channel) => {\n // maybe - do this in event listener\n channelListDispatcher({\n type: CREATE_CHANNEL,\n payload: channel,\n });\n })}\n />\n )\n }\n </>\n );\n}\n\nAddChannel.propTypes = {\n sdk: PropTypes.shape({\n getErrorFirstCallback: PropTypes.func,\n createApplicationUserListQuery: PropTypes.func,\n }).isRequired,\n disabled: PropTypes.bool,\n channelListDispatcher: PropTypes.func.isRequired,\n userFilledApplicationUserListQuery: PropTypes.shape({}),\n onBeforeCreateChannel: PropTypes.func,\n userId: PropTypes.string.isRequired,\n userListQuery: PropTypes.func,\n};\n\nAddChannel.defaultProps = {\n disabled: false,\n userFilledApplicationUserListQuery: {},\n onBeforeCreateChannel: null,\n userListQuery: null,\n};\n","import React, {\n useState,\n useRef,\n useContext,\n} from 'react';\nimport PropTypes from 'prop-types';\n\nimport { LocalizationContext } from '../../../lib/LocalizationContext';\nimport ContextMenu, { MenuItem, MenuItems } from '../../../ui/ContextMenu';\nimport IconButton from '../../../ui/IconButton';\nimport Icon, { IconTypes, IconColors } from '../../../ui/Icon';\nimport LeaveChannelModal from '../../ChannelSettings/components/LeaveChannel';\n\nexport default function ChannelPreviewAction({ disabled, onLeaveChannel }) {\n const parentRef = useRef(null);\n const [showModal, setShowModal] = useState(false);\n const { stringSet } = useContext(LocalizationContext);\n\n return (\n <div\n role=\"button\"\n style={{ display: 'inline-block' }}\n onKeyDown={(e) => { e.stopPropagation(); }}\n tabIndex={0}\n onClick={(e) => { e.stopPropagation(); }}\n >\n <ContextMenu\n menuTrigger={(toggleDropdown) => (\n <IconButton\n ref={parentRef}\n onClick={toggleDropdown}\n height=\"32px\"\n width=\"32px\"\n >\n <Icon\n type={IconTypes.MORE}\n fillColor={IconColors.PRIMARY}\n width=\"24px\"\n height=\"24px\"\n />\n </IconButton>\n )}\n menuItems={(closeDropdown) => (\n <MenuItems\n parentRef={parentRef}\n parentContainRef={parentRef}\n closeDropdown={closeDropdown}\n >\n <MenuItem\n onClick={() => {\n if (disabled) { return; }\n setShowModal(true);\n closeDropdown();\n }}\n >\n {stringSet.CHANNEL_SETTING__LEAVE_CHANNEL__TITLE}\n </MenuItem>\n </MenuItems>\n )}\n />\n {\n showModal && (\n <LeaveChannelModal\n onCloseModal={() => setShowModal(false)}\n onLeaveChannel={onLeaveChannel}\n />\n )\n }\n </div>\n );\n}\n\nChannelPreviewAction.propTypes = {\n disabled: PropTypes.bool,\n onLeaveChannel: PropTypes.func.isRequired,\n};\n\nChannelPreviewAction.defaultProps = {\n disabled: false,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Placeholder from '../../../ui/PlaceHolder';\n\nexport default function ChannelsPlaceholder({\n type,\n}) {\n return (\n <div className=\"sendbird-channel-list\">\n <Placeholder type={type} />\n </div>\n );\n}\n\nChannelsPlaceholder.propTypes = {\n type: PropTypes.string.isRequired,\n};\n","import * as channelActions from './dux/actionTypes';\nimport * as topics from '../../lib/pubSub/topics';\n\nconst createEventHandler = ({\n sdk,\n sdkChannelHandlerId,\n channelListDispatcher,\n logger,\n}) => {\n const ChannelHandler = new sdk.ChannelHandler();\n\n ChannelHandler.onChannelChanged = (channel) => {\n logger.info('ChannelList: onChannelChanged', channel);\n channelListDispatcher({\n type: channelActions.ON_CHANNEL_CHANGED,\n payload: channel,\n });\n };\n ChannelHandler.onChannelDeleted = (channelUrl) => {\n logger.info('ChannelList: onChannelDeleted', channelUrl);\n channelListDispatcher({\n type: channelActions.ON_CHANNEL_DELETED,\n payload: channelUrl,\n });\n };\n ChannelHandler.onUserJoined = (channel) => {\n logger.info('ChannelList: onUserJoined', channel);\n if (channel.lastMessage) {\n channelListDispatcher({\n type: channelActions.ON_USER_JOINED,\n payload: channel,\n });\n }\n };\n ChannelHandler.onUserBanned = (channel, user) => {\n const { currentUser } = sdk;\n logger.info('Channel | useHandleChannelEvents: onUserBanned', channel);\n if (user.userId === currentUser.userId) {\n channelListDispatcher({\n type: channelActions.ON_USER_LEFT,\n payload: {\n channel,\n isMe: true,\n },\n });\n } else {\n channelListDispatcher({\n type: channelActions.ON_USER_LEFT,\n payload: {\n channel,\n isMe: false,\n },\n });\n }\n };\n ChannelHandler.onUserLeft = (channel, leftUser) => {\n const { currentUser } = sdk;\n const isMe = (currentUser.userId === leftUser.userId);\n logger.info('ChannelList: onUserLeft', channel);\n channelListDispatcher({\n type: channelActions.ON_USER_LEFT,\n payload: {\n channel,\n isMe,\n },\n });\n };\n\n ChannelHandler.onReadStatus = (channel) => {\n logger.info('ChannelList: onReadStatus', channel);\n channelListDispatcher({\n type: channelActions.ON_READ_RECEIPT_UPDATED,\n payload: channel,\n });\n };\n\n ChannelHandler.onDeliveryReceiptUpdated = (channel) => {\n logger.info('ChannelList: onDeliveryReceiptUpdated', channel);\n if (channel.lastMessage) {\n channelListDispatcher({\n type: channelActions.ON_DELIVERY_RECEIPT_UPDATED,\n payload: channel,\n });\n }\n };\n\n ChannelHandler.onMessageUpdated = (channel, message) => {\n if (channel.lastMessage.isEqual(message)) {\n logger.info('ChannelList: onMessageUpdated', channel);\n channelListDispatcher({\n type: channelActions.ON_LAST_MESSAGE_UPDATED,\n payload: channel,\n });\n }\n };\n\n ChannelHandler.onChannelHidden = (channel) => {\n logger.info('ChannelList: onChannelHidden', channel);\n channelListDispatcher({\n type: channelActions.ON_CHANNEL_ARCHIVED,\n payload: channel,\n });\n };\n\n ChannelHandler.onChannelFrozen = (channel) => {\n logger.info('ChannelList: onChannelFrozen', channel);\n channelListDispatcher({\n type: channelActions.ON_CHANNEL_FROZEN,\n payload: channel,\n });\n };\n\n ChannelHandler.onChannelUnfrozen = (channel) => {\n logger.info('ChannelList: onChannelUnfrozen', channel);\n channelListDispatcher({\n type: channelActions.ON_CHANNEL_UNFROZEN,\n payload: channel,\n });\n };\n\n logger.info('ChannelList: Added channelHandler');\n sdk.addChannelHandler(sdkChannelHandlerId, ChannelHandler);\n};\n\nconst createChannelListQuery = ({ sdk, userFilledChannelListQuery = {} }) => {\n const channelListQuery = sdk.GroupChannel.createMyGroupChannelListQuery();\n channelListQuery.includeEmpty = false;\n channelListQuery.order = 'latest_last_message'; // 'chronological', 'latest_last_message', 'channel_name_alphabetical', and 'metadata_value_alphabetical'\n channelListQuery.limit = 20; // The value of pagination limit could be set up to 100.\n\n if (userFilledChannelListQuery) {\n Object.keys(userFilledChannelListQuery).forEach((key) => {\n channelListQuery[key] = userFilledChannelListQuery[key];\n });\n }\n\n return channelListQuery;\n};\n\n/**\n * Setup event listener\n * create channel source query\n * addloading screen\n */\nfunction setupChannelList({\n sdk,\n sdkChannelHandlerId,\n channelListDispatcher,\n setChannelSource,\n onChannelSelect,\n userFilledChannelListQuery,\n logger,\n sortChannelList,\n}) {\n createEventHandler({\n sdk,\n channelListDispatcher,\n sdkChannelHandlerId,\n logger,\n });\n\n logger.info('ChannelList - creating query', { userFilledChannelListQuery });\n const channelListQuery = createChannelListQuery({ sdk, userFilledChannelListQuery });\n logger.info('ChannelList - created query', channelListQuery);\n\n setChannelSource(channelListQuery);\n\n channelListDispatcher({\n type: channelActions.INIT_CHANNELS_START,\n });\n\n if (userFilledChannelListQuery) {\n logger.info('ChannelList - setting up channelListQuery', channelListQuery);\n channelListDispatcher({\n type: channelActions.CHANNEL_LIST_PARAMS_UPDATED,\n payload: {\n channelListQuery,\n currentUserId: sdk && sdk.currentUser && sdk.currentUser.userId,\n },\n });\n }\n\n logger.info('ChannelList - fetching channels');\n if (channelListQuery.hasNext) {\n channelListQuery.next((response, error) => {\n const swapParams = sdk.getErrorFirstCallback();\n let channelList = response;\n let err = error;\n if (swapParams) {\n channelList = error;\n err = response;\n }\n logger.info('ChannelList - fetched channels', channelList);\n if (err) {\n logger.error('ChannelList - couldnt fetch channels', err);\n channelListDispatcher({\n type: channelActions.INIT_CHANNELS_FAILURE,\n });\n return;\n }\n // select first channel\n logger.info('ChannelList - highlight channel', channelList[0]);\n let sorted = channelList;\n if (sortChannelList && typeof sortChannelList === 'function') {\n sorted = sortChannelList(channelList);\n logger.info('ChannelList - channel list sorted', sorted);\n }\n onChannelSelect(sorted[0]);\n channelListDispatcher({\n type: channelActions.INIT_CHANNELS_SUCCESS,\n payload: sorted,\n });\n if (channelList && typeof channelList.forEach === 'function') {\n logger.info('ChannelList - mark all channels as delivered');\n channelList.forEach((c) => c.markAsDelivered());\n }\n });\n } else {\n logger.warning('ChannelList - there are no more channels');\n }\n}\n\nexport const pubSubHandleRemover = (subscriber) => {\n subscriber.forEach((s) => {\n try {\n s.remove();\n } catch {\n //\n }\n });\n};\n\nexport const pubSubHandler = (pubSub, channelListDispatcher) => {\n const subScriber = new Map();\n if (!pubSub) return subScriber;\n subScriber.set(topics.CREATE_CHANNEL, pubSub.subscribe(topics.CREATE_CHANNEL, (msg) => {\n const { channel } = msg;\n channelListDispatcher({\n type: 'CREATE_CHANNEL',\n payload: channel,\n });\n }));\n\n subScriber.set(topics.UPDATE_USER_MESSAGE, pubSub.subscribe(topics.UPDATE_USER_MESSAGE, (msg) => {\n const { channel, message } = msg;\n const updatedChannel = channel;\n updatedChannel.lastMessage = message;\n if (channel) {\n channelListDispatcher({\n type: channelActions.ON_LAST_MESSAGE_UPDATED,\n payload: updatedChannel,\n });\n }\n }));\n\n subScriber.set(topics.LEAVE_CHANNEL, pubSub.subscribe(topics.LEAVE_CHANNEL, (msg) => {\n const { channel } = msg;\n channelListDispatcher({\n type: channelActions.LEAVE_CHANNEL_SUCCESS,\n payload: channel.url,\n });\n }));\n\n subScriber.set(topics.SEND_MESSAGE_START, pubSub.subscribe(topics.SEND_MESSAGE_START, (msg) => {\n const { channel } = msg;\n channelListDispatcher({\n type: channelActions.CHANNEL_REPLACED_TO_TOP,\n payload: channel,\n });\n }));\n\n return subScriber;\n};\n\nexport default setupChannelList;\n","import React, { useEffect, useState, useReducer } from 'react';\nimport PropTypes from 'prop-types';\n\nimport withSendbirdContext from '../../lib/SendbirdSdkContext';\nimport * as userActions from '../../lib/dux/user/actionTypes';\nimport { UserProfileProvider } from '../../lib/UserProfileContext';\n\nimport * as channelListActions from './dux/actionTypes';\nimport channelListInitialState from './dux/initialState';\nimport channelListReducers from './dux/reducers';\n\nimport ChannelPreview from '../../ui/ChannelPreview';\nimport ChannelHeader from '../../ui/ChannelHeader';\nimport EditUserProfile from '../../ui/EditUserProfile';\nimport PlaceholderTypes from '../../ui/PlaceHolder/type';\n\nimport AddChannel from './components/AddChannel';\nimport ChannelPreviewAction from './components/ChannelPreviewAction';\nimport PlaceHolder from './components/Placeholder';\n\nimport setupChannelList, {\n pubSubHandler,\n pubSubHandleRemover,\n} from './utils';\nimport { uuidv4 } from '../../utils/uuid';\n\nimport './index.scss';\n\nconst noop = () => { };\n\nfunction ChannelList(props) {\n const {\n stores: { sdkStore = {}, userStore = {} },\n config: {\n userId,\n isOnline,\n userListQuery,\n logger,\n pubSub,\n theme,\n },\n dispatchers: {\n userDispatcher,\n },\n queries = {},\n renderChannelPreview,\n renderHeader,\n renderUserProfile,\n disableUserProfile,\n allowProfileEdit,\n sortChannelList,\n onProfileEditSuccess,\n onThemeChange,\n onBeforeCreateChannel,\n onChannelSelect,\n } = props;\n const { config = {} } = props;\n // enable if it is true atleast once(both are flase by default)\n const enableEditProfile = allowProfileEdit || config.allowProfileEdit;\n const userDefinedDisableUserProfile = disableUserProfile || config.disableUserProfile;\n const userDefinedRenderProfile = renderUserProfile || config.renderUserProfile;\n const { sdk = {} } = sdkStore;\n const userFilledChannelListQuery = queries.channelListQuery;\n const userFilledApplicationUserListQuery = queries.applicationUserListQuery;\n\n const sdkError = sdkStore.error;\n const sdkIntialized = sdkStore.initialized;\n\n const [channelListStore, channelListDispatcher] = useReducer(\n channelListReducers,\n channelListInitialState,\n );\n const [user, setUser] = useState({});\n const [channelSource, setChannelSource] = useState({});\n const [showProfileEdit, setShowProfileEdit] = useState(false);\n const [sdkChannelHandlerId, setSdkChannelHandlerId] = useState(null);\n\n const { loading, currentChannel } = channelListStore;\n\n useEffect(() => {\n setUser(userStore.user);\n }, [userStore.user]);\n\n useEffect(() => {\n const subscriber = pubSubHandler(pubSub, channelListDispatcher);\n return () => {\n pubSubHandleRemover(subscriber);\n };\n }, [sdkIntialized]);\n\n useEffect(() => {\n setSdkChannelHandlerId(uuidv4);\n if (sdkIntialized) {\n logger.info('ChannelList: Setup channelHandlers');\n setupChannelList({\n sdk,\n sdkChannelHandlerId,\n channelListDispatcher,\n setChannelSource,\n onChannelSelect,\n userFilledChannelListQuery,\n logger,\n sortChannelList,\n });\n } else {\n logger.info('ChannelList: Removing channelHandlers');\n // remove previous channelHandlers\n if (sdk && sdk.removeChannelHandler) {\n sdk.removeChannelHandler(sdkChannelHandlerId);\n }\n // remove channelSource\n setChannelSource({});\n // cleanup\n channelListDispatcher({\n type: channelListActions.RESET_CHANNEL_LIST,\n });\n }\n return () => {\n logger.info('ChannelList: Removing channelHandlers');\n if (sdk && sdk.removeChannelHandler) {\n sdk.removeChannelHandler(sdkChannelHandlerId);\n }\n };\n }, [sdkIntialized, userFilledChannelListQuery, sortChannelList]);\n\n const { allChannels } = channelListStore;\n const sortedChannels = (sortChannelList && typeof sortChannelList === 'function')\n ? sortChannelList(allChannels)\n : allChannels;\n\n if (sortedChannels.length !== allChannels.length) {\n const warning = `ChannelList: You have removed/added extra channels on sortChannelList\n this could cause unexpected problems`;\n // eslint-disable-next-line no-console\n console.warn(warning, { before: allChannels, after: sortedChannels });\n logger.warning(warning, { before: allChannels, after: sortedChannels });\n }\n\n useEffect(() => {\n if (!sdk || !sdk.GroupChannel) { return; }\n sdk.GroupChannel.getChannel(currentChannel, (groupChannel) => {\n if (groupChannel) {\n onChannelSelect(groupChannel);\n } else {\n onChannelSelect(null);\n }\n });\n }, [currentChannel]);\n\n return (\n <UserProfileProvider\n className=\"sendbird-channel-list\"\n disableUserProfile={userDefinedDisableUserProfile}\n renderUserProfile={userDefinedRenderProfile}\n >\n <div className=\"sendbird-channel-list__header\">\n <ChannelHeader\n renderHeader={renderHeader}\n user={user}\n onEdit={() => {\n if (enableEditProfile) {\n setShowProfileEdit(true);\n }\n }}\n allowProfileEdit={enableEditProfile}\n iconButton={(\n <AddChannel\n disabled={!isOnline}\n userListQuery={userListQuery}\n sdk={sdk}\n channelListDispatcher={channelListDispatcher}\n userId={userId}\n userFilledApplicationUserListQuery={userFilledApplicationUserListQuery}\n onBeforeCreateChannel={onBeforeCreateChannel}\n />\n )}\n />\n </div>\n {\n showProfileEdit && (\n <EditUserProfile\n onThemeChange={onThemeChange}\n user={user}\n onCancel={() => { setShowProfileEdit(false); }}\n onSubmit={(newName, newFile) => {\n sdk.updateCurrentUserInfoWithProfileImage(newName, newFile, (updatedUser) => {\n userDispatcher({ type: userActions.UPDATE_USER_INFO, payload: updatedUser });\n if (onProfileEditSuccess && typeof onProfileEditSuccess === 'function') {\n onProfileEditSuccess(updatedUser);\n }\n });\n }}\n />\n )\n }\n <div\n className=\"sendbird-channel-list__body\"\n onScroll={(e) => {\n const fetchMore = e.target.clientHeight + e.target.scrollTop === e.target.scrollHeight;\n if (fetchMore && channelSource.hasNext) {\n logger.info('ChannelList: Fetching more channels');\n channelListDispatcher({\n type: channelListActions.FETCH_CHANNELS_START,\n });\n channelSource.next((response, error) => {\n const swapParams = sdk.getErrorFirstCallback();\n let channelList = response;\n let err = error;\n if (swapParams) {\n channelList = error;\n err = response;\n }\n if (err) {\n logger.info('ChannelList: Fetching channels failed', err);\n channelListDispatcher({\n type: channelListActions.FETCH_CHANNELS_FAILURE,\n payload: channelList,\n });\n return;\n }\n logger.info('ChannelList: Fetching channels successful', channelList);\n channelListDispatcher({\n type: channelListActions.FETCH_CHANNELS_SUCCESS,\n payload: channelList,\n });\n if (channelList && typeof channelList.forEach === 'function') {\n logger.info('ChannelList: Marking all channels as read');\n channelList.forEach((c) => c.markAsDelivered());\n }\n });\n }\n }}\n >\n {\n (sdkError) && (\n <PlaceHolder type={PlaceholderTypes.WRONG} />\n )\n }\n {/*\n To do: Implement windowing\n Implement windowing if you are dealing with large number of messages/channels\n https://github.com/bvaughn/react-window -> recommendation\n We hesitate to bring one more dependency to our library,\n we are planning to implement it inside the library\n */}\n <div>\n {\n sortedChannels && sortedChannels.map((channel, idx) => {\n const onLeaveChannel = (c, cb) => {\n logger.info('ChannelList: Leaving channel', c);\n c.leave()\n .then((res) => {\n logger.info('ChannelList: Leaving channel success', res);\n if (cb && typeof cb === 'function') {\n cb(res, null);\n }\n channelListDispatcher({\n type: channelListActions.LEAVE_CHANNEL_SUCCESS,\n payload: channel.url,\n });\n })\n .catch((err) => {\n logger.error('ChannelList: Leaving channel failed', err);\n if (cb && typeof cb === 'function') {\n cb(null, err);\n }\n });\n };\n\n const onClick = () => {\n if (!isOnline) { return; }\n logger.info('ChannelList: Clicked on channel:', channel);\n channelListDispatcher({\n type: channelListActions.SET_CURRENT_CHANNEL,\n payload: channel.url,\n });\n };\n\n return (\n (renderChannelPreview)\n ? (\n // eslint-disable-next-line\n <div key={channel.url} onClick={onClick}>\n {renderChannelPreview({ channel, onLeaveChannel })}\n </div>\n )\n : (\n <ChannelPreview\n key={channel.url}\n tabIndex={idx}\n onClick={onClick}\n channel={channel}\n currentUser={user}\n theme={theme}\n isActive={channel.url === currentChannel}\n // todo - potential performance hit refactor\n ChannelAction={(\n <ChannelPreviewAction\n disabled={!isOnline}\n onLeaveChannel={() => onLeaveChannel(channel)}\n />\n )}\n />\n )\n );\n })\n }\n </div>\n {\n (!sdkIntialized || loading) && (\n <PlaceHolder type={PlaceholderTypes.LOADING} />\n )\n }\n {\n // placeholder\n (!allChannels || allChannels.length === 0) && (\n <PlaceHolder type={PlaceholderTypes.NO_CHANNELS} />\n )\n }\n </div>\n </UserProfileProvider>\n );\n}\n\nChannelList.propTypes = {\n stores: PropTypes.shape({\n sdkStore: PropTypes.shape({\n initialized: PropTypes.bool,\n }),\n userStore: PropTypes.shape({\n user: PropTypes.shape({}),\n }),\n }).isRequired,\n dispatchers: PropTypes.shape({\n userDispatcher: PropTypes.func,\n }).isRequired,\n config: PropTypes.shape({\n userId: PropTypes.string.isRequired,\n userListQuery: PropTypes.func,\n theme: PropTypes.string,\n isOnline: PropTypes.bool,\n logger: PropTypes.shape({\n info: PropTypes.func,\n error: PropTypes.func,\n warning: PropTypes.func,\n }),\n pubSub: PropTypes.shape({\n subscribe: PropTypes.func,\n publish: PropTypes.func,\n }),\n }).isRequired,\n queries: PropTypes.shape({\n channelListQuery: PropTypes.shape({\n channelNameContainsFilter: PropTypes.string,\n channelUrlsFilter: PropTypes.arrayOf(PropTypes.string),\n customTypesFilter: PropTypes.arrayOf(PropTypes.string),\n customTypeStartsWithFilter: PropTypes.string,\n hiddenChannelFilter: PropTypes.string,\n includeEmpty: PropTypes.bool,\n limit: PropTypes.number,\n memberStateFilter: PropTypes.string,\n metadataOrderKeyFilter: PropTypes.string,\n nicknameContainsFilter: PropTypes.string,\n order: PropTypes.string,\n publicChannelFilter: PropTypes.string,\n superChannelFilter: PropTypes.string,\n unreadChannelFilter: PropTypes.string,\n userIdsExactFilter: PropTypes.arrayOf(PropTypes.string),\n userIdsIncludeFilter: PropTypes.arrayOf(PropTypes.string),\n userIdsIncludeFilterQueryType: PropTypes.string,\n }),\n applicationUserListQuery: PropTypes.shape({\n limit: PropTypes.number,\n userIdsFilter: PropTypes.arrayOf(PropTypes.string),\n metaDataKeyFilter: PropTypes.string,\n metaDataValuesFilter: PropTypes.arrayOf(PropTypes.string),\n }),\n }),\n onBeforeCreateChannel: PropTypes.func,\n renderChannelPreview: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.func,\n ]),\n disableUserProfile: PropTypes.bool,\n renderUserProfile: PropTypes.func,\n allowProfileEdit: PropTypes.bool,\n sortChannelList: PropTypes.func,\n onThemeChange: PropTypes.func,\n onProfileEditSuccess: PropTypes.func,\n renderHeader: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.func,\n ]),\n onChannelSelect: PropTypes.func,\n};\n\nChannelList.defaultProps = {\n onBeforeCreateChannel: null,\n renderChannelPreview: null,\n renderHeader: null,\n disableUserProfile: false,\n renderUserProfile: null,\n allowProfileEdit: false,\n onThemeChange: null,\n sortChannelList: null,\n onProfileEditSuccess: null,\n queries: {},\n onChannelSelect: noop,\n};\n\nexport default withSendbirdContext(ChannelList);\n"],"names":["RESET_CHANNEL_LIST","CREATE_CHANNEL","LEAVE_CHANNEL_SUCCESS","SET_CURRENT_CHANNEL","SHOW_CHANNEL_SETTINGS","HIDE_CHANNEL_SETTINGS","FETCH_CHANNELS_START","FETCH_CHANNELS_SUCCESS","FETCH_CHANNELS_FAILURE","INIT_CHANNELS_START","INIT_CHANNELS_SUCCESS","INIT_CHANNELS_FAILURE","ON_USER_JOINED","ON_CHANNEL_DELETED","ON_LAST_MESSAGE_UPDATED","ON_USER_LEFT","ON_CHANNEL_CHANGED","ON_CHANNEL_ARCHIVED","ON_CHANNEL_FROZEN","ON_CHANNEL_UNFROZEN","ON_READ_RECEIPT_UPDATED","ON_DELIVERY_RECEIPT_UPDATED","CHANNEL_REPLACED_TO_TOP","CHANNEL_LIST_PARAMS_UPDATED","initialized","loading","allChannels","currentChannel","showSettings","channelListQuery","currentUserId","reducer","state","action","type","actions","initialState","payload","length","url","currentChannels","map","c","filteredChannels","filter","find","channel","filterChannelListParams","getChannelsWithUpsertedChannel","ch","channelUrl","isMe","unreadMessageCount","lastMessage","currentUnreadCount","isFrozen","getChannelTitle","stringSet","LabelStringSet","name","members","NO_TITLE","NO_MEMBERS","userId","nickname","NO_NAME","join","getLastMessageCreatedAt","date","createdAt","isToday","format","isYesterday","getTotalMembers","memberCount","getPrettyLastMessage","message","MAXLEN","messageType","truncate","getLastMessage","getChannelUnreadMessageCount","ChannelPreview","currentUser","isActive","ChannelAction","theme","onClick","tabIndex","isBroadcast","useContext","LocalizationContext","React","IconTypes","BROADCAST","IconColors","SECONDARY","LabelTypography","SUBTITLE_2","LabelColors","ONBACKGROUND_1","utils","CAPTION_2","ONBACKGROUND_2","FREEZE","PRIMARY","CAPTION_3","BODY_2","ONBACKGROUND_3","propTypes","PropTypes","shape","arrayOf","coverUrl","string","bool","element","isRequired","func","number","defaultProps","ChannelHeader","user","renderHeader","iconButton","onEdit","allowProfileEdit","profileUrl","oneOfType","instanceOf","IconButton","EditUserProfile","_a","_b","onCancel","onSubmit","_c","changeTheme","noop","_d","onThemeChange","hiddenInputRef","useRef","inputRef","formRef","_e","useState","currentImg","setCurrentImg","_f","newFile","setNewFile","EDIT_PROFILE__TITLE","BUTTON__SAVE","ButtonType","current","value","reportValidity","e","preventDefault","EDIT_PROFILE__IMAGE_LABEL","display","URL","createObjectURL","target","files","click","BUTTON_1","EDIT_PROFILE__IMAGE_UPLOAD","EDIT_PROFILE__NICKNAME_LABEL","EDIT_PROFILE__NICKNAME_PLACEHOLDER","EDIT_PROFILE__USERID_LABEL","EDIT_PROFILE__THEME_LABEL","TOGGLE_ON","TOGGLE_OFF","mapStoreToProps","store","config","setCurrenttheme","ConnectedEditUserProfile","withSendbirdContext","AddChannel","sdk","disabled","channelListDispatcher","onBeforeCreateChannel","userFilledApplicationUserListQuery","userListQuery","showModal","setShowModal","step","setStep","setType","createApplicationUserListQuery","isBroadcastAvailable","isBroadcastChannelEnabled","isSupergroupAvailable","isSuperGroupChannelEnabled","CREATE","CHAT","SUBTITLE_1","SUPERGROUP","getErrorFirstCallback","MODAL__CREATE_CHANNEL__TITLE","BUTTON__CREATE","createDefaultUserListQuery","selectedUsers","createChannel","then","ChannelPreviewAction","onLeaveChannel","parentRef","stopPropagation","toggleDropdown","MORE","closeDropdown","CHANNEL_SETTING__LEAVE_CHANNEL__TITLE","LeaveChannelModal","ChannelsPlaceholder","Placeholder","createEventHandler","sdkChannelHandlerId","logger","ChannelHandler","onChannelChanged","info","channelActions","onChannelDeleted","onUserJoined","onUserBanned","onUserLeft","leftUser","onReadStatus","onDeliveryReceiptUpdated","onMessageUpdated","isEqual","onChannelHidden","onChannelFrozen","onChannelUnfrozen","addChannelHandler","createChannelListQuery","userFilledChannelListQuery","GroupChannel","createMyGroupChannelListQuery","includeEmpty","order","limit","Object","keys","forEach","key","setupChannelList","setChannelSource","onChannelSelect","sortChannelList","hasNext","next","response","error","swapParams","channelList","err","sorted","markAsDelivered","warning","pubSubHandleRemover","subscriber","s","remove","pubSubHandler","pubSub","subScriber","Map","set","topics","subscribe","msg","updatedChannel","ChannelList","props","stores","sdkStore","userStore","isOnline","userDispatcher","dispatchers","queries","renderChannelPreview","renderUserProfile","disableUserProfile","onProfileEditSuccess","enableEditProfile","userDefinedDisableUserProfile","userDefinedRenderProfile","applicationUserListQuery","sdkError","sdkIntialized","useReducer","channelListReducers","channelListInitialState","channelListStore","setUser","channelSource","showProfileEdit","setShowProfileEdit","setSdkChannelHandlerId","useEffect","uuidv4","removeChannelHandler","channelListActions","sortedChannels","console","warn","before","after","getChannel","groupChannel","newName","updateCurrentUserInfoWithProfileImage","updatedUser","userActions","fetchMore","clientHeight","scrollTop","scrollHeight","PlaceHolder","PlaceholderTypes","WRONG","idx","cb","leave","res","catch","LOADING","NO_CHANNELS","publish","channelNameContainsFilter","channelUrlsFilter","customTypesFilter","customTypeStartsWithFilter","hiddenChannelFilter","memberStateFilter","metadataOrderKeyFilter","nicknameContainsFilter","publicChannelFilter","superChannelFilter","unreadChannelFilter","userIdsExactFilter","userIdsIncludeFilter","userIdsIncludeFilterQueryType","userIdsFilter","metaDataKeyFilter","metaDataValuesFilter"],"mappings":"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"}