import React, { useState, useEffect } from 'react'; import { useToast } from '../../components/Shared/ToastContext'; import { useTranslation } from 'react-i18next'; import { PlusCircleIcon } from '@heroicons/react/24/outline'; import { getTaskIntelligenceEnabled } from '../../utils/profileService'; interface NewTaskProps { onTaskCreate: (taskName: string) => Promise; } const NewTask: React.FC = ({ onTaskCreate }) => { const [taskName, setTaskName] = useState(''); const [showNameLengthHelper, setShowNameLengthHelper] = useState(false); const [taskIntelligenceEnabled, setTaskIntelligenceEnabled] = useState(true); const { showErrorToast } = useToast(); const { t } = useTranslation(); // Fetch task intelligence setting when component mounts (with caching) useEffect(() => { const fetchTaskIntelligenceSetting = async () => { // Check if we have a cached value const cachedValue = localStorage.getItem('taskIntelligenceEnabled'); if (cachedValue !== null) { setTaskIntelligenceEnabled(JSON.parse(cachedValue)); return; } try { const enabled = await getTaskIntelligenceEnabled(); setTaskIntelligenceEnabled(enabled); // Cache the value for future use localStorage.setItem( 'taskIntelligenceEnabled', JSON.stringify(enabled) ); } catch { setTaskIntelligenceEnabled(true); // Default to enabled localStorage.setItem( 'taskIntelligenceEnabled', JSON.stringify(true) ); } }; fetchTaskIntelligenceSetting(); }, []); const handleInputChange = (event: React.ChangeEvent) => { const value = event.target.value; setTaskName(value); // Show helper message for task name if it's too short (only if intelligence is enabled) if (taskIntelligenceEnabled) { const trimmedValue = value.trim(); setShowNameLengthHelper( trimmedValue.length > 0 && trimmedValue.length < 10 ); } }; const handleKeyDown = async ( event: React.KeyboardEvent ) => { if (event.key === 'Enter' && taskName.trim()) { const taskText = taskName.trim(); setTaskName(''); setShowNameLengthHelper(false); // Hide helper when creating task try { await onTaskCreate(taskText); // Success toast is now handled by the parent component } catch { setTaskName(taskText); showErrorToast( t('errors.taskCreate', 'Failed to create task.') ); } } }; return (
{showNameLengthHelper && taskIntelligenceEnabled && (

{t( 'task.nameHelper.title', 'Make it more descriptive!' )}

{t( 'task.nameHelper.suggestion', 'Try adding more details like "Call dentist to schedule cleaning appointment" instead of just "Call dentist"' )}

)}
); }; export default NewTask;