import React from 'react'; import { StyleSheet, Text, View } from 'react-native'; import { useTheme } from '../../contexts/themeContext/ThemeContext'; import type { ChannelPreviewProps } from './ChannelPreview'; import type { DefaultAttachmentType, DefaultChannelType, DefaultCommandType, DefaultEventType, DefaultMessageType, DefaultReactionType, DefaultUserType, UnknownType, } from '../../types/types'; const styles = StyleSheet.create({ unreadContainer: { alignItems: 'center', borderRadius: 8, flexShrink: 1, justifyContent: 'center', }, unreadText: { color: '#FFFFFF', fontSize: 11, fontWeight: '700', paddingHorizontal: 5, paddingVertical: 1, }, }); export type ChannelPreviewUnreadCountProps< At extends UnknownType = DefaultAttachmentType, Ch extends UnknownType = DefaultChannelType, Co extends string = DefaultCommandType, Ev extends UnknownType = DefaultEventType, Me extends UnknownType = DefaultMessageType, Re extends UnknownType = DefaultReactionType, Us extends UnknownType = DefaultUserType, > = Pick, 'channel'> & { maxUnreadCount: number; unread?: number; }; export const ChannelPreviewUnreadCount = < At extends UnknownType = DefaultAttachmentType, Ch extends UnknownType = DefaultChannelType, Co extends string = DefaultCommandType, Ev extends UnknownType = DefaultEventType, Me extends UnknownType = DefaultMessageType, Re extends UnknownType = DefaultReactionType, Us extends UnknownType = DefaultUserType, >( props: ChannelPreviewUnreadCountProps, ) => { const { maxUnreadCount, unread } = props; const { theme: { channelPreview: { unreadContainer, unreadText }, colors: { accent_red }, }, } = useTheme(); return ( {!!unread && ( {unread > maxUnreadCount ? `${maxUnreadCount}+` : unread} )} ); };