import React, { useState, useEffect } from 'react'; import { Paper, Stack, Switch, Text, Tooltip, NumberInput } from '@mantine/core'; import { useTranslation } from 'react-i18next'; import { usePreferences } from '../../../../contexts/PreferencesContext'; const DEFAULT_AUTO_UNZIP_FILE_LIMIT = 4; const GeneralSection: React.FC = () => { const { t } = useTranslation(); const { preferences, updatePreference } = usePreferences(); const [fileLimitInput, setFileLimitInput] = useState(preferences.autoUnzipFileLimit); // Sync local state with preference changes useEffect(() => { setFileLimitInput(preferences.autoUnzipFileLimit); }, [preferences.autoUnzipFileLimit]); return (
{t('settings.general.title', 'General')} {t('settings.general.description', 'Configure general application preferences.')}
{t('settings.general.autoUnzip', 'Auto-unzip API responses')} {t('settings.general.autoUnzipDescription', 'Automatically extract files from ZIP responses')}
updatePreference('autoUnzip', event.currentTarget.checked)} />
{t('settings.general.autoUnzipFileLimit', 'Auto-unzip file limit')} {t('settings.general.autoUnzipFileLimitDescription', 'Maximum number of files to extract from ZIP')}
{ const numValue = Number(fileLimitInput); const finalValue = (!fileLimitInput || isNaN(numValue) || numValue < 1 || numValue > 100) ? DEFAULT_AUTO_UNZIP_FILE_LIMIT : numValue; setFileLimitInput(finalValue); updatePreference('autoUnzipFileLimit', finalValue); }} min={1} max={100} step={1} disabled={!preferences.autoUnzip} style={{ width: 90 }} />
); }; export default GeneralSection;