|
|
import React, { useState } from 'react'; |
|
|
import Header from './components/Header'; |
|
|
import InputSection from './components/InputSection'; |
|
|
import Results from './components/Results'; |
|
|
|
|
|
function App() { |
|
|
const [result, setResult] = useState(null); |
|
|
const [loading, setLoading] = useState(false); |
|
|
|
|
|
const handleAnalyze = async (data) => { |
|
|
setLoading(true); |
|
|
try { |
|
|
let payload = {}; |
|
|
if (data.type === 'text') { |
|
|
payload = { text: data.content }; |
|
|
} |
|
|
|
|
|
|
|
|
const response = await fetch('/api/analyze/', { |
|
|
method: 'POST', |
|
|
headers: { |
|
|
'Content-Type': 'application/json', |
|
|
}, |
|
|
body: JSON.stringify(payload), |
|
|
}); |
|
|
|
|
|
if (!response.ok) { |
|
|
throw new Error('Analysis failed'); |
|
|
} |
|
|
|
|
|
const resultData = await response.json(); |
|
|
|
|
|
setResult({ ...resultData, originalText: payload.text || "Uploaded File Content" }); |
|
|
} catch (error) { |
|
|
console.error("Error analyzing:", error); |
|
|
alert("Failed to connect to local backend. Make sure Django is running!"); |
|
|
} finally { |
|
|
setLoading(false); |
|
|
} |
|
|
}; |
|
|
|
|
|
const handleReset = () => { |
|
|
setResult(null); |
|
|
}; |
|
|
|
|
|
return ( |
|
|
<> |
|
|
<Header /> |
|
|
<main className="w-full flex-1 flex flex-col items-center px-4 pb-12"> |
|
|
{!result && !loading && ( |
|
|
<InputSection onAnalyze={handleAnalyze} /> |
|
|
)} |
|
|
|
|
|
{loading && ( |
|
|
<div className="mt-12 flex flex-col items-center"> |
|
|
<div className="w-12 h-12 border-4 border-blue-500 border-t-transparent rounded-full animate-spin mb-4"></div> |
|
|
<p className="text-secondary animate-pulse">Analyzing patterns...</p> |
|
|
</div> |
|
|
)} |
|
|
|
|
|
{result && ( |
|
|
<Results result={result} onReset={handleReset} /> |
|
|
)} |
|
|
</main> |
|
|
|
|
|
<footer className="w-full py-6 text-center text-[rgba(255,255,255,0.2)] text-sm"> |
|
|
© 2026 DetectAI Project. POC Version. |
|
|
</footer> |
|
|
</> |
|
|
); |
|
|
} |
|
|
|
|
|
export default App; |
|
|
|