UNPKG

stream-chat-react-native-core

Version:

The official React Native and Expo components for Stream Chat, a service for building chat applications

95 lines (89 loc) 2.21 kB
import { useMemo } from 'react'; import type { ChannelContextValue } from '../../../contexts/channelContext/ChannelContext'; export const useCreateChannelContext = ({ channel, channelUnreadStateStore, disabled, enableMessageGroupingByUser, enforceUniqueReaction, error, hideDateSeparators, hideStickyDateHeader, highlightedMessageId, isChannelActive, loadChannelAroundMessage, loadChannelAtFirstUnreadMessage, loading, markRead, maxTimeBetweenGroupedMessages, maximumMessageLimit, members, read, reloadChannel, scrollToFirstUnreadThreshold, setChannelUnreadState, setTargetedMessage, hasPendingInitialTargetLoad, targetedMessage, threadList, uploadAbortControllerRef, watcherCount, watchers, }: ChannelContextValue) => { const channelId = channel?.id; const membersLength = Object.keys(members).length; const readUsers = Object.values(read); const readUsersLength = readUsers.length; const readUsersLastReads = readUsers .map(({ last_read }) => last_read?.toISOString() ?? '') .join(); const channelContext: ChannelContextValue = useMemo( () => ({ channel, channelUnreadStateStore, disabled, enableMessageGroupingByUser, enforceUniqueReaction, error, hideDateSeparators, hideStickyDateHeader, highlightedMessageId, isChannelActive, loadChannelAroundMessage, loadChannelAtFirstUnreadMessage, loading, markRead, maximumMessageLimit, maxTimeBetweenGroupedMessages, members, read, reloadChannel, scrollToFirstUnreadThreshold, setChannelUnreadState, setTargetedMessage, hasPendingInitialTargetLoad, targetedMessage, threadList, uploadAbortControllerRef, watcherCount, watchers, }), // eslint-disable-next-line react-hooks/exhaustive-deps [ channelId, disabled, error, isChannelActive, highlightedMessageId, loading, membersLength, readUsersLength, readUsersLastReads, targetedMessage, threadList, watcherCount, maximumMessageLimit, ], ); return channelContext; };