@chatscope/use-chat
Version:
React hook for state management in chat applications
52 lines (46 loc) • 1.39 kB
text/typescript
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;
}