UNPKG

@vchatcloud/react-ui-kit

Version:

VChatCloud UI Kit for react integration

100 lines (99 loc) 3.09 kB
import { ChannelMessageEvent, ChannelReceiveWhisperEvent } from '@vchatcloud/sdk'; import { MessageEventType, PrivateRoomStatus } from './constants'; export type SessionType = "parameter" | "login" | "private"; export interface VChatCloudAppProps { /** * 설치형 솔루션을 사용하시는 경우 사용중이신 서버의 주소를 입력해주세요. */ readonly url?: string; /** * CMS에서 사용하는 계정의 이메일입니다. */ readonly email?: string; /** * 접속한 채팅방의 `roomId`(=`channelKey`)입니다. */ readonly roomId: string; /** * 유저의 고유 키 입니다. */ readonly clientKey: string; /** * 유저의 닉네입입니다. */ readonly nickName: string; /** * 유저의 등급입니다. */ readonly grade?: string; /** * 유저의 정보로, 보통 JSON형태를 사용합니다. * * 필요한 데이터를 추가로 저장할 수 있습니다. */ readonly userInfo?: unknown; /** * 세션 종류를 지정합니다. * * - `login` : 로그인 페이지를 사용해서 유저가 설정한 데이터로 접속합니다. * - `parameter` : 지정한 파라미터로 바로 접속합니다. * - `private` : 지정한 파라미터로 비밀채팅방에 접속합니다. */ readonly sessionType: SessionType; /** * 지정할 곳의 `Selector`를 입력하거나, `DOMElement`객체를 전달합니다. * * 새 비밀 채팅방을 입장할 경우 `createPortal`을 통해 * 비밀채팅방을 표시할 곳을 설정합니다. * * 지정하지 않은 상태에서 비밀채팅방을 생성하거나 입장하는 경우 * 오류가 발생할 수 있습니다. */ readonly privateContainer?: string | HTMLElement; /** * 나가기 버튼을 눌렀을 때 실행할 함수를 지정할 수 있습니다. */ readonly onDisconnect?: () => void; } export interface CustomComponentProps { readonly logoUrl?: string; readonly company?: string; } export interface MessageProps { message: ExtendedMessage; } export interface VChatCloudFile { id: string; name: string; type: string; size: number; expire: string; } export interface VChatCloudAPIFile { fileNm: string; fileSize: number; expire: string; fileKey: string; fileSizeText: string; fileExt: string; originFileNm: string; } export type ExtendedMessage = Omit<ChannelMessageEvent & Partial<ChannelReceiveWhisperEvent>, "messageDt"> & { messageEventType: MessageEventType; uuid: string; messageDt: string | number; }; export interface PrivateRoomData { roomId: string | undefined; status: PrivateRoomStatus; } export interface ToastData { id: string; message: string; type: ToastType; timeout: number; } export type ToastType = "error" | "warning" | "info"; export type OnlyRequired<T> = { [K in keyof T as NonNullable<unknown> extends Pick<T, K> ? never : K]: T[K]; };