import { ChatObject, MessageObject, PersonObject } from '../../interfaces'; import { ChatEngineStyles } from './styles'; import { ChatListProps } from './ChatList/props'; import { ChatFormProps } from './ChatList/ChatForm/props'; import { ChatCardProps } from './ChatList/ChatCard/props'; import { ChatFeedProps } from './ChatFeed/props'; import { ChatHeaderProps } from './ChatFeed/ChatHeader/props'; import { MessageListProps } from './ChatFeed/MessageList/props'; import { MessageProps } from './ChatFeed/MessageList/Message/props'; import { MessageFormProps } from './ChatFeed/MessageForm/props'; import { WelcomeGifProps } from './ChatFeed/WelcomeGif/props'; import { ChatSettingsProps } from './ChatSettings/props'; import { ChatAvatarsProps } from './ChatSettings/ChatAvatars/props'; import { PeopleSettingsProps } from './ChatSettings/PeopleSettings/props'; import { PhotosSettingsProps } from './ChatSettings/PhotosSettings/props'; import { OptionsSettingsProps } from './ChatSettings/OptionsSettings/props'; export interface MultiChatWindowProps extends ChatEngineStyles { // Data username?: string; chats?: ChatObject[]; activeChatId?: number; messages?: MessageObject[]; peopleToInvite?: PersonObject[]; timezoneOffset?: number; // State isChatListLoading?: boolean; isChatFeedLoading?: boolean; isChatSettingsLoading?: boolean; hasMoreChats?: boolean; hasMoreMessages?: boolean; isMobileChatListOpen?: boolean; isMobileChatSettingsOpen?: boolean; // Hooks onChatCardClick?: (chatId: number) => Promise; onChatFormSubmit?: (title: string) => Promise; onChatLoaderShow?: () => Promise; onMessageLoaderShow?: () => Promise; onMessageLoaderHide?: () => Promise; onBottomMessageShow?: () => Promise; onBottomMessageHide?: () => Promise; onMessageFormSubmit?: (message: MessageObject) => Promise; onInvitePersonClick?: (person: PersonObject) => Promise; onRemovePersonClick?: (person: PersonObject) => Promise; onDeleteChatClick?: (chat: ChatObject) => Promise; onMobileChatListClick?: () => Promise; onMobileChatSettingsClick?: () => Promise; onCloseMobileChatSettingsClick?: () => Promise; // Render Functions renderChatList?: ( props: ChatListProps ) => JSX.Element | Element | React.FC; renderChatForm?: ( props: ChatFormProps ) => JSX.Element | Element | React.FC; renderChatCard?: ( props: ChatCardProps ) => JSX.Element | Element | React.FC; renderChatFeed?: ( props: ChatFeedProps ) => JSX.Element | Element | React.FC; renderChatHeader?: ( props: ChatHeaderProps ) => JSX.Element | Element | React.FC; renderMessageList?: ( props: MessageListProps ) => JSX.Element | Element | React.FC; renderMessage?: ( props: MessageProps ) => JSX.Element | Element | React.FC; renderWelcomeGif?: ( props: WelcomeGifProps ) => JSX.Element | Element | React.FC; renderMessageForm?: ( props: MessageFormProps ) => JSX.Element | Element | React.FC; renderChatSettings?: ( props: ChatSettingsProps ) => JSX.Element | Element | React.FC; renderChatAvatars?: ( props: ChatAvatarsProps ) => JSX.Element | Element | React.FC; renderPeopleSettings?: ( props: PeopleSettingsProps ) => JSX.Element | Element | React.FC; renderPhotosSettings?: ( props: PhotosSettingsProps ) => JSX.Element | Element | React.FC; renderOptionsSettings?: ( props: OptionsSettingsProps ) => JSX.Element | Element | React.FC; }