store.ts 1.7 KB

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