stream-chat-react-native-core
Version:
The official React Native and Expo components for Stream Chat, a service for building chat applications
38 lines (32 loc) • 1.5 kB
text/typescript
import { useContext } from 'react';
import {
ChannelContext,
type ChannelContextValue,
} from '../../../contexts/channelContext/ChannelContext';
import {
ChannelsContext,
type ChannelsContextValue,
} from '../../../contexts/channelsContext/ChannelsContext';
import {
ThreadContext,
type ThreadContextValue,
} from '../../../contexts/threadContext/ThreadContext';
import {
ThreadsContext,
type ThreadsContextValue,
} from '../../../contexts/threadsContext/ThreadsContext';
import { DEFAULT_BASE_CONTEXT_VALUE } from '../../../contexts/utils/defaultBaseContextValue';
import type { NotificationTargetPanel } from '../notificationTarget';
const isProvided = <T>(value: T) => value !== (DEFAULT_BASE_CONTEXT_VALUE as T);
export const useNotificationTarget = (): NotificationTargetPanel | undefined => {
const channelContext = useContext(ChannelContext) as ChannelContextValue;
const channelsContext = useContext(ChannelsContext) as ChannelsContextValue;
const threadContext = useContext(ThreadContext) as ThreadContextValue;
const threadsContext = useContext(ThreadsContext) as ThreadsContextValue;
if (isProvided(channelContext) && channelContext.threadList) return 'thread';
if (isProvided(threadContext) && threadContext.threadInstance) return 'thread';
if (isProvided(channelContext) && channelContext.channel) return 'channel';
if (isProvided(threadsContext)) return 'thread-list';
if (isProvided(channelsContext)) return 'channel-list';
return undefined;
};