'use client' import { useEffect, } from 'react' import { useTranslation } from 'react-i18next' import { EmbeddedChatbotContext, useEmbeddedChatbotContext, } from './context' import { useEmbeddedChatbot } from './hooks' import { isDify } from './utils' import { useThemeContext } from './theme/theme-context' import { CssTransform } from './theme/utils' import useBreakpoints, { MediaType } from '@/hooks/use-breakpoints' import Loading from '@/app/components/base/loading' import LogoHeader from '@/app/components/base/logo/logo-embedded-chat-header' import Header from '@/app/components/base/chat/embedded-chatbot/header' import ChatWrapper from '@/app/components/base/chat/embedded-chatbot/chat-wrapper' import DifyLogo from '@/app/components/base/logo/dify-logo' import cn from '@/utils/classnames' import useDocumentTitle from '@/hooks/use-document-title' import { useGlobalPublicStore } from '@/context/global-public-context' const Chatbot = () => { const { isMobile, allowResetChat, appData, appChatListDataLoading, chatShouldReloadKey, handleNewConversation, themeBuilder, } = useEmbeddedChatbotContext() const { t } = useTranslation() const systemFeatures = useGlobalPublicStore(s => s.systemFeatures) const customConfig = appData?.custom_config const site = appData?.site const difyIcon = useEffect(() => { themeBuilder?.buildTheme(site?.chat_color_theme, site?.chat_color_theme_inverted) }, [site, customConfig, themeBuilder]) useDocumentTitle(site?.title || 'Chat') return (
{appChatListDataLoading && ( )} {!appChatListDataLoading && ( )}
{/* powered by */} {isMobile && (
{!appData?.custom_config?.remove_webapp_brand && (
{t('share.chat.poweredBy')}
{ systemFeatures.branding.enabled && systemFeatures.branding.workspace_logo ? logo : appData?.custom_config?.replace_webapp_logo ? logo : }
)}
)}
) } const EmbeddedChatbotWrapper = () => { const media = useBreakpoints() const isMobile = media === MediaType.mobile const themeBuilder = useThemeContext() const { appData, userCanAccess, appParams, appMeta, appChatListDataLoading, currentConversationId, currentConversationItem, appPrevChatList, pinnedConversationList, conversationList, newConversationInputs, newConversationInputsRef, handleNewConversationInputsChange, inputsForms, handleNewConversation, handleStartChat, handleChangeConversation, handleNewConversationCompleted, chatShouldReloadKey, isInstalledApp, allowResetChat, appId, handleFeedback, currentChatInstanceRef, clearChatList, setClearChatList, isResponding, setIsResponding, currentConversationInputs, setCurrentConversationInputs, allInputsHidden, initUserVariables, } = useEmbeddedChatbot() return } const EmbeddedChatbot = () => { return } export default EmbeddedChatbot