From cba29e6aae637b04ff6eaf28f74bc15b6242b9ea Mon Sep 17 00:00:00 2001 From: Adam Mathes Date: Mon, 16 Feb 2026 19:37:50 -0800 Subject: Remove legacy V2 React frontend and update build/test scripts to focus on Vanilla JS (V3) --- frontend/src/components/Settings.tsx | 236 ----------------------------------- 1 file changed, 236 deletions(-) delete mode 100644 frontend/src/components/Settings.tsx (limited to 'frontend/src/components/Settings.tsx') diff --git a/frontend/src/components/Settings.tsx b/frontend/src/components/Settings.tsx deleted file mode 100644 index 3dab77f..0000000 --- a/frontend/src/components/Settings.tsx +++ /dev/null @@ -1,236 +0,0 @@ -import React, { useEffect, useState } from 'react'; -import type { Feed } from '../types'; -import './Settings.css'; -import { apiFetch } from '../utils'; - -interface SettingsProps { - fontTheme?: string; - setFontTheme?: (t: string) => void; -} - -export default function Settings({ fontTheme, setFontTheme }: SettingsProps) { - const [feeds, setFeeds] = useState([]); - /* ... existing state ... */ - const [newFeedUrl, setNewFeedUrl] = useState(''); - const [loading, setLoading] = useState(false); - const [error, setError] = useState(null); - - const [importFile, setImportFile] = useState(null); - - /* ... existing fetchFeeds ... */ - const fetchFeeds = React.useCallback(() => { - setLoading(true); - apiFetch('/api/feed/') - .then((res) => { - if (!res.ok) throw new Error('Failed to fetch feeds'); - return res.json(); - }) - .then((data) => { - setFeeds(data); - setLoading(false); - }) - .catch((err) => { - setError(err.message); - setLoading(false); - }); - }, []); - - useEffect(() => { - // eslint-disable-next-line - fetchFeeds(); - }, [fetchFeeds]); - - /* ... existing handlers ... */ - const handleAddFeed = (e: React.FormEvent) => { - e.preventDefault(); - if (!newFeedUrl) return; - - setLoading(true); - apiFetch('/api/feed/', { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ url: newFeedUrl }), - }) - .then((res) => { - if (!res.ok) throw new Error('Failed to add feed'); - return res.json(); - }) - .then(() => { - setNewFeedUrl(''); - fetchFeeds(); - }) - .catch((err) => { - setError(err.message); - setLoading(false); - }); - }; - - const handleDeleteFeed = (id: number) => { - if (!globalThis.confirm('Are you sure you want to delete this feed?')) return; - - setLoading(true); - apiFetch(`/api/feed/${id}`, { - method: 'DELETE', - }) - .then((res) => { - if (!res.ok) throw new Error('Failed to delete feed'); - setFeeds(feeds.filter((f) => f._id !== id)); - setLoading(false); - }) - .catch((err) => { - setError(err.message); - setLoading(false); - }); - }; - - const handleImport = (e: React.FormEvent) => { - e.preventDefault(); - if (!importFile) return; - - setLoading(true); - const formData = new FormData(); - formData.append('file', importFile); - formData.append('format', 'opml'); - - apiFetch('/api/import', { - method: 'POST', - body: formData, - }) - .then((res) => { - if (!res.ok) throw new Error('Failed to import feeds'); - return res.json(); - }) - .then(() => { - setImportFile(null); - fetchFeeds(); - alert('Import successful!'); - }) - .catch((err) => { - setError(err.message); - setLoading(false); - }); - }; - - 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 ( -
-

Settings

- - {setFontTheme && ( -
-

Appearance

-
- - -
-
- )} - -
-

Add New Feed

-
- setNewFeedUrl(e.target.value)} - placeholder="https://example.com/feed.xml" - required - className="feed-input" - disabled={loading} - /> - -
-
- -
-
-

Import Feeds (OPML)

-
- setImportFile(e.target.files?.[0] || null)} - className="file-input" - disabled={loading} - /> - -
-
- -
-

Export Feeds

-
- OPML - Text - JSON -
-
- -
-

Actions

- -
-
- - {error &&

{error}

} - -
-

Manage Feeds

- {loading &&

Loading...

} -
    - {feeds.map((feed) => ( -
  • -
    - {feed.title || '(No Title)'} - {feed.url} -
    - -
  • - ))} -
-
-
- ); -} -- cgit v1.2.3