UNPKG

@rohitninawe/chat-uikit-react-native

Version:

Ready-to-use Chat UI Components for React Native

212 lines (209 loc) 8.65 kB
import { AvatarStyleInterface, CometChatMentionsFormatter, CometChatTextFormatter, CometChatUrlsFormatter, ListItemStyleInterface, localize } from "../shared"; import { ImageType } from "../shared"; import { DatePattern, SelectionMode } from "../shared/base/Types"; import { CometChatOptions } from "../shared"; // import { ConversationListConfiguration } from "../CometChatConversationList/ConversationListConfiguration"; import { ConversationsStyleInterface } from "./ConversationsStyle"; //@ts-ignore import { CometChat } from "@cometchat/chat-sdk-react-native"; import { StatusIndicatorStyleInterface } from "../shared/views/CometChatStatusIndicator/StatusIndicatorStyle"; import { DateStyleInterface } from "../shared/views/CometChatDate/DateStyle"; import { BadgeStyleInterface } from "../shared/views/CometChatBadge"; export interface ConversationsConfigurationInterface { disableUsersPresence?: boolean, disableReceipt?: boolean, disableTyping?: boolean, disableSoundForMessages?: boolean, customSoundForMessages?: string, protectedGroupIcon?: ImageType, privateGroupIcon?: ImageType, readIcon?: ImageType, deliveredIcon?: ImageType, sentIcon?: ImageType, datePattern?: (conversation: CometChat.Conversation) => DatePattern, ListItemView?: (item: CometChat.Conversation) => JSX.Element, AppBarOption?: () => JSX.Element, options?: (item: CometChat.Conversation) => CometChatOptions[], hideSeparator?: boolean, searchPlaceholder?: string, backButtonIcon?: ImageType, showBackButton?: boolean, selectionMode?: SelectionMode, onSelection?: (items: Array<CometChat.Conversation>) => void, selectedConversations?: () => Array<CometChat.Conversation>, searchBoxIcon?: ImageType, hideSearch?: boolean, EmptyStateView?: () => JSX.Element, ErrorStateView?: () => JSX.Element, LoadingStateView?: () => JSX.Element, conversationsRequestBuilder?: CometChat.ConversationsRequestBuilder, SubtitleView?: (item: CometChat.Conversation) => JSX.Element, onItemPress?: (item: CometChat.Conversation) => void, onItemLongPress?: (item: CometChat.Conversation) => void, onError?: (e: CometChat.CometChatException) => void, onBack?: () => void, statusIndicatorStyle?: StatusIndicatorStyleInterface, avatarStyle?: AvatarStyleInterface, receiptStyle?: any, dateStyle?: DateStyleInterface, conversationsStyle?: ConversationsStyleInterface, listItemStyle?: ListItemStyleInterface, badgeStyle?: BadgeStyleInterface, /** * if true, mentions will be disabled. Default: false */ disableMentions?: boolean, /** * Collection of text formatter class * @type {Array<CometChatMentionsFormatter | CometChatUrlsFormatter | CometChatTextFormatter>} */ textFormatters?: Array<CometChatMentionsFormatter | CometChatUrlsFormatter | CometChatTextFormatter>; } /** * @class ConversationsConfiguration */ export class ConversationsConfiguration implements ConversationsConfigurationInterface { disableUsersPresence?: boolean; disableReceipt?: boolean; disableTyping?: boolean; disableSoundForMessages?: boolean; customSoundForMessages?: string; protectedGroupIcon?: ImageType; privateGroupIcon?: ImageType; readIcon?: ImageType; deliveredIcon?: ImageType; sentIcon?: ImageType; datePattern?: (conversation: CometChat.Conversation) => DatePattern; ListItemView?: (item: CometChat.Conversation) => JSX.Element; AppBarOption?: () => JSX.Element; options?: (item: CometChat.Conversation) => CometChatOptions[]; hideSeparator?: boolean; searchPlaceholder?: string; backButtonIcon?: ImageType; showBackButton?: boolean; selectionMode?: SelectionMode; onSelection?: (items: Array<CometChat.Conversation>) => void; selectedConversations?: () => Array<CometChat.Conversation>; searchBoxIcon?: ImageType; hideSearch?: boolean; EmptyStateView?: () => JSX.Element; ErrorStateView?: () => JSX.Element; LoadingStateView?: () => JSX.Element; conversationsRequestBuilder?: CometChat.ConversationsRequestBuilder; SubtitleView?: (item: CometChat.Conversation) => JSX.Element; onItemPress?: (item: CometChat.Conversation) => void; onItemLongPress?: (item: CometChat.Conversation) => void; onError?: (e: CometChat.CometChatException) => void; onBack?: () => void; statusIndicatorStyle?: StatusIndicatorStyleInterface; avatarStyle?: AvatarStyleInterface; receiptStyle?: any; dateStyle?: DateStyleInterface; conversationsStyle?: ConversationsStyleInterface; listItemStyle?: ListItemStyleInterface; badgeStyle?: BadgeStyleInterface; /** * if true, mentions will be disabled. Default: false */ disableMentions?: boolean; /** * Collection of text formatter class * @type {Array<CometChatMentionsFormatter | CometChatUrlsFormatter | CometChatTextFormatter>} */ textFormatters?: Array<CometChatMentionsFormatter | CometChatUrlsFormatter | CometChatTextFormatter>; constructor({ disableUsersPresence = false, disableReceipt = false, disableTyping = false, disableSoundForMessages = false, customSoundForMessages = undefined, protectedGroupIcon = undefined, privateGroupIcon = undefined, readIcon = undefined, deliveredIcon = undefined, sentIcon = undefined, datePattern = undefined, ListItemView = undefined, AppBarOption = undefined, options = undefined, hideSeparator = true, searchPlaceholder = localize("SEARCH"), backButtonIcon = undefined, showBackButton = false, selectionMode = "none", onSelection = undefined, selectedConversations = undefined, searchBoxIcon = undefined, hideSearch = true, EmptyStateView = undefined, ErrorStateView = undefined, LoadingStateView = undefined, conversationsRequestBuilder = undefined, SubtitleView = undefined, onItemPress = undefined, onItemLongPress = undefined, onError = undefined, onBack = undefined, statusIndicatorStyle = undefined, avatarStyle = undefined, receiptStyle = {}, dateStyle = undefined, conversationsStyle = undefined, listItemStyle = undefined, badgeStyle = undefined, disableMentions, textFormatters }: ConversationsConfigurationInterface) { this.disableUsersPresence = disableUsersPresence; this.disableReceipt = disableReceipt; this.disableTyping = disableTyping; this.disableSoundForMessages = disableSoundForMessages; this.customSoundForMessages = customSoundForMessages; this.protectedGroupIcon = protectedGroupIcon; this.privateGroupIcon = privateGroupIcon; this.readIcon = readIcon; this.deliveredIcon = deliveredIcon; this.sentIcon = sentIcon; this.datePattern = datePattern; this.ListItemView = ListItemView; this.AppBarOption = AppBarOption; this.options = options; this.hideSeparator = hideSeparator; this.searchPlaceholder = searchPlaceholder; this.backButtonIcon = backButtonIcon; this.showBackButton = showBackButton; this.selectionMode = selectionMode; if (onSelection) { this.onSelection = onSelection; } this.selectedConversations = selectedConversations; this.searchBoxIcon = searchBoxIcon; this.hideSearch = hideSearch; this.EmptyStateView = EmptyStateView; this.ErrorStateView = ErrorStateView; this.LoadingStateView = LoadingStateView; this.conversationsRequestBuilder = conversationsRequestBuilder; this.SubtitleView = SubtitleView; if (onItemPress) { this.onItemPress = onItemPress; } if (onItemLongPress) { this.onItemLongPress = onItemLongPress; } if (onError) { this.onError = onError; } if (onBack) { this.onBack = onBack; } this.statusIndicatorStyle = statusIndicatorStyle this.avatarStyle = avatarStyle this.receiptStyle = receiptStyle this.dateStyle = dateStyle this.conversationsStyle = conversationsStyle this.listItemStyle = listItemStyle this.badgeStyle = badgeStyle this.disableMentions = disableMentions; this.textFormatters = textFormatters; } }