diff options
| author | Adam Mathes <adam@adammathes.com> | 2026-02-14 21:20:32 -0800 |
|---|---|---|
| committer | Adam Mathes <adam@adammathes.com> | 2026-02-14 21:20:32 -0800 |
| commit | 5e2b1b2de36fc63cfa677705388f5701c62ee138 (patch) | |
| tree | 8a7df54caa3131fe8aeed32fb54eb0c6c7d58c1e /frontend/src | |
| parent | 189de78203be6b07c81622a4b641144352d8a82b (diff) | |
| download | neko-5e2b1b2de36fc63cfa677705388f5701c62ee138.tar.gz neko-5e2b1b2de36fc63cfa677705388f5701c62ee138.tar.bz2 neko-5e2b1b2de36fc63cfa677705388f5701c62ee138.zip | |
feat: add manual crawl button and E2E test for crawl cycle
Diffstat (limited to 'frontend/src')
| -rw-r--r-- | frontend/src/components/Settings.tsx | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/frontend/src/components/Settings.tsx b/frontend/src/components/Settings.tsx index b218775..ec432ba 100644 --- a/frontend/src/components/Settings.tsx +++ b/frontend/src/components/Settings.tsx @@ -111,6 +111,25 @@ export default function Settings({ fontTheme, setFontTheme }: SettingsProps) { }); }; + const handleCrawl = () => { + setLoading(true); + apiFetch('/api/crawl', { + method: 'POST', + }) + .then((res) => { + if (!res.ok) throw new Error('Failed to start crawl'); + return res.json(); + }) + .then(() => { + setLoading(false); + alert('Crawl started!'); + }) + .catch((err) => { + setError(err.message); + setLoading(false); + }); + }; + return ( <div className="settings-page variant-glass"> <h2>Settings</h2> @@ -178,6 +197,13 @@ export default function Settings({ fontTheme, setFontTheme }: SettingsProps) { <a href="/api/export/json" className="export-btn">JSON</a> </div> </div> + + <div className="crawl-section"> + <h3>Actions</h3> + <button onClick={handleCrawl} disabled={loading} className="crawl-btn"> + Crawl All Feeds Now + </button> + </div> </div> {error && <p className="error-message">{error}</p>} |
