|
'use client' |
|
|
|
import type { RefObject } from 'react' |
|
import { createContext, useContext } from 'use-context-selector' |
|
import type { |
|
ChatConfig, |
|
ChatItem, |
|
Feedback, |
|
} from '../types' |
|
import type { ThemeBuilder } from './theme/theme-context' |
|
import type { |
|
AppConversationData, |
|
AppData, |
|
AppMeta, |
|
ConversationItem, |
|
} from '@/models/share' |
|
|
|
export type EmbeddedChatbotContextValue = { |
|
appInfoError?: any |
|
appInfoLoading?: boolean |
|
appMeta?: AppMeta |
|
appData?: AppData |
|
appParams?: ChatConfig |
|
appChatListDataLoading?: boolean |
|
currentConversationId: string |
|
currentConversationItem?: ConversationItem |
|
appPrevChatList: ChatItem[] |
|
pinnedConversationList: AppConversationData['data'] |
|
conversationList: AppConversationData['data'] |
|
showConfigPanelBeforeChat: boolean |
|
newConversationInputs: Record<string, any> |
|
newConversationInputsRef: RefObject<Record<string, any>> |
|
handleNewConversationInputsChange: (v: Record<string, any>) => void |
|
inputsForms: any[] |
|
handleNewConversation: () => void |
|
handleStartChat: () => void |
|
handleChangeConversation: (conversationId: string) => void |
|
handleNewConversationCompleted: (newConversationId: string) => void |
|
chatShouldReloadKey: string |
|
isMobile: boolean |
|
isInstalledApp: boolean |
|
appId?: string |
|
handleFeedback: (messageId: string, feedback: Feedback) => void |
|
currentChatInstanceRef: RefObject<{ handleStop: () => void }> |
|
themeBuilder?: ThemeBuilder |
|
} |
|
|
|
export const EmbeddedChatbotContext = createContext<EmbeddedChatbotContextValue>({ |
|
currentConversationId: '', |
|
appPrevChatList: [], |
|
pinnedConversationList: [], |
|
conversationList: [], |
|
showConfigPanelBeforeChat: false, |
|
newConversationInputs: {}, |
|
newConversationInputsRef: { current: {} }, |
|
handleNewConversationInputsChange: () => {}, |
|
inputsForms: [], |
|
handleNewConversation: () => {}, |
|
handleStartChat: () => {}, |
|
handleChangeConversation: () => {}, |
|
handleNewConversationCompleted: () => {}, |
|
chatShouldReloadKey: '', |
|
isMobile: false, |
|
isInstalledApp: false, |
|
handleFeedback: () => {}, |
|
currentChatInstanceRef: { current: { handleStop: () => {} } }, |
|
}) |
|
export const useEmbeddedChatbotContext = () => useContext(EmbeddedChatbotContext) |
|
|