Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

context.tsx 2.7KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  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. import { AccessMode } from '@/models/access-control'
  18. export type EmbeddedChatbotContextValue = {
  19. accessMode?: AccessMode
  20. userCanAccess?: boolean
  21. appInfoError?: any
  22. appInfoLoading?: boolean
  23. appMeta?: AppMeta
  24. appData?: AppData
  25. appParams?: ChatConfig
  26. appChatListDataLoading?: boolean
  27. currentConversationId: string
  28. currentConversationItem?: ConversationItem
  29. appPrevChatList: ChatItem[]
  30. pinnedConversationList: AppConversationData['data']
  31. conversationList: AppConversationData['data']
  32. newConversationInputs: Record<string, any>
  33. newConversationInputsRef: RefObject<Record<string, any>>
  34. handleNewConversationInputsChange: (v: Record<string, any>) => void
  35. inputsForms: any[]
  36. handleNewConversation: () => void
  37. handleStartChat: (callback?: any) => void
  38. handleChangeConversation: (conversationId: string) => void
  39. handleNewConversationCompleted: (newConversationId: string) => void
  40. chatShouldReloadKey: string
  41. isMobile: boolean
  42. isInstalledApp: boolean
  43. allowResetChat: boolean
  44. appId?: string
  45. handleFeedback: (messageId: string, feedback: Feedback) => void
  46. currentChatInstanceRef: RefObject<{ handleStop: () => void }>
  47. themeBuilder?: ThemeBuilder
  48. clearChatList?: boolean
  49. setClearChatList: (state: boolean) => void
  50. isResponding?: boolean
  51. setIsResponding: (state: boolean) => void,
  52. currentConversationInputs: Record<string, any> | null,
  53. setCurrentConversationInputs: (v: Record<string, any>) => void,
  54. }
  55. export const EmbeddedChatbotContext = createContext<EmbeddedChatbotContextValue>({
  56. userCanAccess: false,
  57. accessMode: AccessMode.SPECIFIC_GROUPS_MEMBERS,
  58. currentConversationId: '',
  59. appPrevChatList: [],
  60. pinnedConversationList: [],
  61. conversationList: [],
  62. newConversationInputs: {},
  63. newConversationInputsRef: { current: {} },
  64. handleNewConversationInputsChange: noop,
  65. inputsForms: [],
  66. handleNewConversation: noop,
  67. handleStartChat: noop,
  68. handleChangeConversation: noop,
  69. handleNewConversationCompleted: noop,
  70. chatShouldReloadKey: '',
  71. isMobile: false,
  72. isInstalledApp: false,
  73. allowResetChat: true,
  74. handleFeedback: noop,
  75. currentChatInstanceRef: { current: { handleStop: noop } },
  76. clearChatList: false,
  77. setClearChatList: noop,
  78. isResponding: false,
  79. setIsResponding: noop,
  80. currentConversationInputs: {},
  81. setCurrentConversationInputs: noop,
  82. })
  83. export const useEmbeddedChatbotContext = () => useContext(EmbeddedChatbotContext)