| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 | 
							- import { useState } from 'react'
 - import produce from 'immer'
 - import { useGetState } from 'ahooks'
 - import type { ConversationItem } from '@/models/share'
 - 
 - const storageConversationIdKey = 'conversationIdInfo'
 - 
 - type ConversationInfoType = Omit<ConversationItem, 'inputs' | 'id'>
 - function useConversation() {
 -   const [conversationList, setConversationList] = useState<ConversationItem[]>([])
 -   const [pinnedConversationList, setPinnedConversationList] = useState<ConversationItem[]>([])
 -   const [currConversationId, doSetCurrConversationId, getCurrConversationId] = useGetState<string>('-1')
 -   // when set conversation id, we do not have set appId
 -   const setCurrConversationId = (id: string, appId: string, isSetToLocalStroge = true, newConversationName = '') => {
 -     doSetCurrConversationId(id)
 -     if (isSetToLocalStroge && id !== '-1') {
 -       // conversationIdInfo: {[appId1]: conversationId1, [appId2]: conversationId2}
 -       const conversationIdInfo = globalThis.localStorage?.getItem(storageConversationIdKey) ? JSON.parse(globalThis.localStorage?.getItem(storageConversationIdKey) || '') : {}
 -       conversationIdInfo[appId] = id
 -       globalThis.localStorage?.setItem(storageConversationIdKey, JSON.stringify(conversationIdInfo))
 -     }
 -   }
 - 
 -   const getConversationIdFromStorage = (appId: string) => {
 -     const conversationIdInfo = globalThis.localStorage?.getItem(storageConversationIdKey) ? JSON.parse(globalThis.localStorage?.getItem(storageConversationIdKey) || '') : {}
 -     const id = conversationIdInfo[appId]
 -     return id
 -   }
 - 
 -   const isNewConversation = currConversationId === '-1'
 -   // input can be updated by user
 -   const [newConversationInputs, setNewConversationInputs] = useState<Record<string, any> | null>(null)
 -   const resetNewConversationInputs = () => {
 -     if (!newConversationInputs)
 -       return
 -     setNewConversationInputs(produce(newConversationInputs, (draft) => {
 -       Object.keys(draft).forEach((key) => {
 -         draft[key] = ''
 -       })
 -     }))
 -   }
 -   const [existConversationInputs, setExistConversationInputs] = useState<Record<string, any> | null>(null)
 -   const currInputs = isNewConversation ? newConversationInputs : existConversationInputs
 -   const setCurrInputs = isNewConversation ? setNewConversationInputs : setExistConversationInputs
 - 
 -   // info is muted
 -   const [newConversationInfo, setNewConversationInfo] = useState<ConversationInfoType | null>(null)
 -   const [existConversationInfo, setExistConversationInfo] = useState<ConversationInfoType | null>(null)
 -   const currConversationInfo = isNewConversation ? newConversationInfo : existConversationInfo
 - 
 -   return {
 -     conversationList,
 -     setConversationList,
 -     pinnedConversationList,
 -     setPinnedConversationList,
 -     currConversationId,
 -     getCurrConversationId,
 -     setCurrConversationId,
 -     getConversationIdFromStorage,
 -     isNewConversation,
 -     currInputs,
 -     newConversationInputs,
 -     existConversationInputs,
 -     resetNewConversationInputs,
 -     setCurrInputs,
 -     currConversationInfo,
 -     setNewConversationInfo,
 -     setExistConversationInfo,
 -   }
 - }
 - 
 - export default useConversation
 
 
  |