import { useState, useCallback } from 'react'; import { useDispatch } from 'react-redux'; import { analyzeKeyword as analyzeKeywordThunk } from '../store/reducers/sourcesSlice'; import sourceService from '../services/sourceService'; const useKeywordAnalysis = () => { const [keyword, setKeyword] = useState(''); const [analysisData, setAnalysisData] = useState(null); const [patternAnalysis, setPatternAnalysis] = useState(null); const [loading, setLoading] = useState(false); const [patternLoading, setPatternLoading] = useState(false); const [error, setError] = useState(null); const dispatch = useDispatch(); // Function to call the backend API for keyword analysis const analyzeKeyword = async () => { if (!keyword.trim()) { setError('Please enter a keyword'); return; } setLoading(true); setError(null); try { // Call the Redux thunk to analyze keyword trends const result = await dispatch(analyzeKeywordThunk({ keyword: keyword, date_range: 'monthly' })); if (analyzeKeywordThunk.fulfilled.match(result)) { setAnalysisData(result.payload.data); } else { setError('Failed to analyze keyword. Please try again.'); } } catch (err) { setError('Failed to analyze keyword. Please try again.'); console.error('Keyword analysis error:', err); } finally { setLoading(false); } }; // Function to call the backend API for keyword frequency pattern analysis const analyzeKeywordPattern = async () => { if (!keyword.trim()) { setError('Please enter a keyword'); return; } setPatternLoading(true); setError(null); try { // Call the new service method for frequency pattern analysis const response = await sourceService.analyzeKeywordPattern({ keyword }); setPatternAnalysis(response.data.data); return response.data; } catch (err) { setError('Failed to analyze keyword frequency pattern. Please try again.'); console.error('Keyword frequency pattern analysis error:', err); throw err; } finally { setPatternLoading(false); } }; return { keyword, setKeyword, analysisData, setAnalysisData, patternAnalysis, setPatternAnalysis, loading, setLoading, patternLoading, setPatternLoading, error, setError, analyzeKeyword, analyzeKeywordPattern }; }; export default useKeywordAnalysis;