import { Button } from '@mantine/core'; import { closeAllModals, openModal } from '@mantine/modals'; import { useQueryClient } from '@tanstack/react-query'; import isElectron from 'is-electron'; import { useTranslation } from 'react-i18next'; import { ConfirmModal, toast } from '/@/renderer/components'; import { SettingsOptions } from '/@/renderer/features/settings/components/settings-option'; import { useCallback, useState } from 'react'; const browser = isElectron() ? window.electron.browser : null; export const CacheSettings = () => { const [isClearing, setIsClearing] = useState(false); const queryClient = useQueryClient(); const { t } = useTranslation(); const clearCache = useCallback( async (full: boolean) => { setIsClearing(true); try { queryClient.clear(); if (full && browser) { await browser.clearCache(); } toast.success({ message: t('setting.clearCacheSuccess', { postProcess: 'sentenceCase' }), }); } catch (error) { console.error(error); toast.error({ message: (error as Error).message }); } setIsClearing(false); closeAllModals(); }, [queryClient, t], ); const openResetConfirmModal = (full: boolean) => { const key = full ? 'clearCache' : 'clearQueryCache'; openModal({ children: ( clearCache(full)}> {t(`common.areYouSure`, { postProcess: 'sentenceCase' })} ), title: t(`setting.${key}`), }); }; return ( <> openResetConfirmModal(false)} > {t('common.clear', { postProcess: 'sentenceCase' })} } description={t('setting.clearQueryCache', { context: 'description', })} title={t('setting.clearQueryCache')} /> {browser && ( openResetConfirmModal(true)} > {t('common.clear', { postProcess: 'sentenceCase' })} } description={t('setting.clearCache', { context: 'description', })} title={t('setting.clearCache')} /> )} ); };