store.ts 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import { create } from 'zustand'
  2. import type { App, AppSSO } from '@/types/app'
  3. import type { IChatItem } from '@/app/components/base/chat/chat/type'
  4. type State = {
  5. appDetail?: App & Partial<AppSSO>
  6. appSidebarExpand: string
  7. currentLogItem?: IChatItem
  8. currentLogModalActiveTab: string
  9. showPromptLogModal: boolean
  10. showAgentLogModal: boolean
  11. showMessageLogModal: boolean
  12. showAppConfigureFeaturesModal: boolean
  13. }
  14. type Action = {
  15. setAppDetail: (appDetail?: App & Partial<AppSSO>) => void
  16. setAppSiderbarExpand: (state: string) => void
  17. setCurrentLogItem: (item?: IChatItem) => void
  18. setCurrentLogModalActiveTab: (tab: string) => void
  19. setShowPromptLogModal: (showPromptLogModal: boolean) => void
  20. setShowAgentLogModal: (showAgentLogModal: boolean) => void
  21. setShowMessageLogModal: (showMessageLogModal: boolean) => void
  22. setShowAppConfigureFeaturesModal: (showAppConfigureFeaturesModal: boolean) => void
  23. }
  24. export const useStore = create<State & Action>(set => ({
  25. appDetail: undefined,
  26. setAppDetail: appDetail => set(() => ({ appDetail })),
  27. appSidebarExpand: '',
  28. setAppSiderbarExpand: appSidebarExpand => set(() => ({ appSidebarExpand })),
  29. currentLogItem: undefined,
  30. currentLogModalActiveTab: 'DETAIL',
  31. setCurrentLogItem: currentLogItem => set(() => ({ currentLogItem })),
  32. setCurrentLogModalActiveTab: currentLogModalActiveTab => set(() => ({ currentLogModalActiveTab })),
  33. showPromptLogModal: false,
  34. setShowPromptLogModal: showPromptLogModal => set(() => ({ showPromptLogModal })),
  35. showAgentLogModal: false,
  36. setShowAgentLogModal: showAgentLogModal => set(() => ({ showAgentLogModal })),
  37. showMessageLogModal: false,
  38. setShowMessageLogModal: showMessageLogModal => set(() => {
  39. if (showMessageLogModal) {
  40. return { showMessageLogModal }
  41. }
  42. else {
  43. return {
  44. showMessageLogModal,
  45. currentLogModalActiveTab: 'DETAIL',
  46. }
  47. }
  48. }),
  49. showAppConfigureFeaturesModal: false,
  50. setShowAppConfigureFeaturesModal: showAppConfigureFeaturesModal => set(() => ({ showAppConfigureFeaturesModal })),
  51. }))