UNPKG

@chatscope/use-chat

Version:

React hook for state management in chat applications

52 lines (46 loc) 1.39 kB
import { IChatService, IStorage } from "./interfaces"; import { ChatEventType, MessageContentType } from "./enums"; import { ChatEvent } from "./events"; import { MessageGroup } from "./MessageGroup"; import { Conversation } from "./Conversation"; import { User } from "./User"; import { ChatMessage } from "./ChatMessage"; export type ChatEventHandler< T extends ChatEventType, E extends ChatEvent<T> > = (event: E) => void; export type ChatMessageId = string; export type ConversationId = string; export type UserId = string; export type Permission = unknown; export type GroupedMessages = Record<ConversationId, MessageGroup[]>; export type ChatState = { /** * Current logged in user (chat operator) */ currentUser?: User; users: Array<User>; conversations: Array<Conversation>; activeConversation?: Conversation; currentMessages: MessageGroup[]; messages: GroupedMessages; /** * Current Message input value */ currentMessage: string; }; export type UpdateState = () => void; export type ChatServiceFactory<S extends IChatService> = ( storage: IStorage, update: UpdateState ) => S; export type SendMessageServiceParams = { message: ChatMessage<MessageContentType>; conversationId: ConversationId; }; export interface SendTypingServiceParams { conversationId: ConversationId; userId: UserId; content: string; isTyping: boolean; }