chat / client /src /hooks /Config /useClearStates.ts
helloya20's picture
Upload 2345 files
f0743f4 verified
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;
}