| import { useRecoilCallback } from 'recoil'; | |
| import { clearLocalStorage } from '~/utils/localStorage'; | |
| import store from '~/store'; | |
| export default function useClearStates() { | |
| const clearConversations = store.useClearConvoState(); | |
| const clearSubmissions = store.useClearSubmissionState(); | |
| const clearLatestMessages = store.useClearLatestMessages(); | |
| const clearStates = useRecoilCallback( | |
| ({ reset, snapshot }) => | |
| async (skipFirst?: boolean) => { | |
| await clearSubmissions(skipFirst); | |
| await clearConversations(skipFirst); | |
| await clearLatestMessages(skipFirst); | |
| const keys = await snapshot.getPromise(store.conversationKeysAtom); | |
| for (const key of keys) { | |
| if (skipFirst === true && key === 0) { | |
| continue; | |
| } | |
| reset(store.filesByIndex(key)); | |
| reset(store.presetByIndex(key)); | |
| reset(store.textByIndex(key)); | |
| reset(store.showStopButtonByIndex(key)); | |
| reset(store.abortScrollFamily(key)); | |
| reset(store.isSubmittingFamily(key)); | |
| reset(store.optionSettingsFamily(key)); | |
| reset(store.showAgentSettingsFamily(key)); | |
| reset(store.showPopoverFamily(key)); | |
| reset(store.showMentionPopoverFamily(key)); | |
| reset(store.showPlusPopoverFamily(key)); | |
| reset(store.showPromptsPopoverFamily(key)); | |
| reset(store.activePromptByIndex(key)); | |
| reset(store.globalAudioURLFamily(key)); | |
| reset(store.globalAudioFetchingFamily(key)); | |
| reset(store.globalAudioPlayingFamily(key)); | |
| reset(store.activeRunFamily(key)); | |
| reset(store.audioRunFamily(key)); | |
| reset(store.messagesSiblingIdxFamily(key.toString())); | |
| } | |
| clearLocalStorage(skipFirst); | |
| }, | |
| [], | |
| ); | |
| return clearStates; | |
| } | |