import { Dialog } from '../ui/Dialog.tsx'; import * as Tabs from '@radix-ui/react-tabs'; import { DialogContent, DialogHeader, DialogTitle } from '../ui/Dialog.tsx'; import { useEffect, useState, useContext } from 'react'; import { cn } from '~/utils/'; import { useClearConversationsMutation } from '~/data-provider'; import { ThemeContext } from '~/hooks/ThemeContext'; import store from '~/store'; import { CheckIcon } from 'lucide-react'; export default function Settings({ open, onOpenChange }) { const { theme, setTheme } = useContext(ThemeContext); const { newConversation } = store.useConversation(); const { refreshConversations } = store.useConversations(); const clearConvosMutation = useClearConversationsMutation(); const [isMobile, setIsMobile] = useState(false); const [confirmClear, setConfirmClear] = useState(false); const clearConvos = () => { if (confirmClear) { console.log('Clearing conversations...'); clearConvosMutation.mutate(); setConfirmClear(false); } else { setConfirmClear(true); } }; const changeTheme = (e) => { setTheme(e.target.value); }; // check if mobile dynamically and update useEffect(() => { const checkMobile = () => { if (window.innerWidth <= 768) { setIsMobile(true); } else { setIsMobile(false); } }; checkMobile(); window.addEventListener('resize', checkMobile); }, []); useEffect(() => { if (clearConvosMutation.isSuccess) { newConversation(); refreshConversations(); } }, [clearConvosMutation.isSuccess]); useEffect(() => { // If the user clicks in the dialog when confirmClear is true, set it to false const handleClick = (e) => { if (confirmClear) { if (e.target.id === 'clearConvosBtn' || e.target.id === 'clearConvosTxt') { return; } setConfirmClear(false); } }; window.addEventListener('click', handleClick); return () => window.removeEventListener('click', handleClick); }, [confirmClear]); return ( Settings
General
Theme
Clear all chats
); }