aboutsummaryrefslogtreecommitdiffstats
path: root/frontend/src/components/Settings.tsx
diff options
context:
space:
mode:
authorAdam Mathes <adam@adammathes.com>2026-02-14 21:20:32 -0800
committerAdam Mathes <adam@adammathes.com>2026-02-14 21:20:32 -0800
commit5e2b1b2de36fc63cfa677705388f5701c62ee138 (patch)
tree8a7df54caa3131fe8aeed32fb54eb0c6c7d58c1e /frontend/src/components/Settings.tsx
parent189de78203be6b07c81622a4b641144352d8a82b (diff)
downloadneko-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/components/Settings.tsx')
-rw-r--r--frontend/src/components/Settings.tsx26
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>}