feat: Move "Small websites" filter to settings dialog

Co-authored-by: aider (gemini/gemini-2.5-pro) <aider@aider.chat>
This commit is contained in:
2026-01-02 23:51:23 +00:00
parent e0f523cc1c
commit 93903eedf9
2 changed files with 25 additions and 15 deletions

View File

@@ -25,6 +25,7 @@ function App() {
const [bodyFontSize, setBodyFontSize] = useState(Number(localStorage.getItem('bodyFontSize')) || defaultBodyFontSize);
const [bodyFont, setBodyFont] = useState(localStorage.getItem('bodyFont') || 'Sans Serif');
const [articleFont, setArticleFont] = useState(localStorage.getItem('articleFont') || 'Apparatus SIL');
const [filterSmallweb, setFilterSmallweb] = useState(() => localStorage.getItem('filterSmallweb') === 'true');
const updateCache = useCallback((key, value) => {
cache.current[key] = value;
@@ -50,6 +51,12 @@ function App() {
localStorage.setItem('theme', 'red');
};
const handleFilterChange = e => {
const isChecked = e.target.checked;
setFilterSmallweb(isChecked);
localStorage.setItem('filterSmallweb', isChecked);
};
const changeBodyFont = (font) => {
setBodyFont(font);
localStorage.setItem('bodyFont', font);
@@ -164,6 +171,13 @@ function App() {
<button className={theme === 'black' ? 'active' : ''} onClick={() => { black() }}>Black</button>
<button className={theme === 'red' ? 'active' : ''} onClick={() => { red() }}>Red</button>
</div>
<div className="setting-group">
<h4>Feed</h4>
<div className="font-option">
<input className="checkbox" type="checkbox" id="filter-smallweb" checked={filterSmallweb} onChange={handleFilterChange} />
<label htmlFor="filter-smallweb">Small websites</label>
</div>
</div>
<div className="setting-group">
<h4>Font Size</h4>
<button onClick={() => changeBodyFontSize(-0.05)}>-</button>
@@ -237,7 +251,7 @@ function App() {
<Route path='/(|search)' component={Submit} />
</div>
<Route path='/' exact render={(props) => <Feed {...props} updateCache={updateCache} />} />
<Route path='/' exact render={(props) => <Feed {...props} updateCache={updateCache} filterSmallweb={filterSmallweb} />} />
<Switch>
<Route path='/search' component={Results} />
<Route path='/:id' exact render={(props) => <Article {...props} cache={cache.current} />} />