Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. 'use client'
  2. import type { RefObject } from 'react'
  3. import { createContext, useContext } from 'use-context-selector'
  4. import type {
  5. ChatConfig,
  6. ChatItem,
  7. Feedback,
  8. } from '../types'
  9. import type { ThemeBuilder } from './theme/theme-context'
  10. import type {
  11. AppConversationData,
  12. AppData,
  13. AppMeta,
  14. ConversationItem,
  15. } from '@/models/share'
  16. import { noop } from 'lodash-es'
  17. export type EmbeddedChatbotContextValue = {
  18. appInfoError?: any
  19. appInfoLoading?: boolean
  20. appMeta?: AppMeta
  21. appData?: AppData
  22. appParams?: ChatConfig
  23. appChatListDataLoading?: boolean
  24. currentConversationId: string
  25. currentConversationItem?: ConversationItem
  26. appPrevChatList: ChatItem[]
  27. pinnedConversationList: AppConversationData['data']
  28. conversationList: AppConversationData['data']
  29. newConversationInputs: Record<string, any>
  30. newConversationInputsRef: RefObject<Record<string, any>>
  31. handleNewConversationInputsChange: (v: Record<string, any>) => void
  32. inputsForms: any[]
  33. handleNewConversation: () => void
  34. handleStartChat: (callback?: any) => void
  35. handleChangeConversation: (conversationId: string) => void
  36. handleNewConversationCompleted: (newConversationId: string) => void
  37. chatShouldReloadKey: string
  38. isMobile: boolean
  39. isInstalledApp: boolean
  40. allowResetChat: boolean
  41. appId?: string
  42. handleFeedback: (messageId: string, feedback: Feedback) => void
  43. currentChatInstanceRef: RefObject<{ handleStop: () => void }>
  44. themeBuilder?: ThemeBuilder
  45. clearChatList?: boolean
  46. setClearChatList: (state: boolean) => void
  47. isResponding?: boolean
  48. setIsResponding: (state: boolean) => void,
  49. currentConversationInputs: Record<string, any> | null,
  50. setCurrentConversationInputs: (v: Record<string, any>) => void,
  51. }
  52. export const EmbeddedChatbotContext = createContext<EmbeddedChatbotContextValue>({
  53. currentConversationId: '',
  54. appPrevChatList: [],
  55. pinnedConversationList: [],
  56. conversationList: [],
  57. newConversationInputs: {},
  58. newConversationInputsRef: { current: {} },
  59. handleNewConversationInputsChange: noop,
  60. inputsForms: [],
  61. handleNewConversation: noop,
  62. handleStartChat: noop,
  63. handleChangeConversation: noop,
  64. handleNewConversationCompleted: noop,
  65. chatShouldReloadKey: '',
  66. isMobile: false,
  67. isInstalledApp: false,
  68. allowResetChat: true,
  69. handleFeedback: noop,
  70. currentChatInstanceRef: { current: { handleStop: noop } },
  71. clearChatList: false,
  72. setClearChatList: noop,
  73. isResponding: false,
  74. setIsResponding: noop,
  75. currentConversationInputs: {},
  76. setCurrentConversationInputs: noop,
  77. })
  78. export const useEmbeddedChatbotContext = () => useContext(EmbeddedChatbotContext)