feat: add default highlight visibility settings

- Add defaultHighlightVisibilityNostrverse/Friends/Mine to UserSettings interface
- Add toggle controls in Settings page under Startup Preferences section
- Apply default visibility settings on app startup in Bookmarks component
- Users can now set which highlight levels (nostrverse/friends/mine) should be visible by default
This commit is contained in:
Gigi
2025-10-06 20:46:33 +01:00
parent 1b548cee3c
commit 22323591c9
3 changed files with 52 additions and 0 deletions

View File

@@ -125,6 +125,12 @@ const Bookmarks: React.FC<BookmarksProps> = ({ relayPool, onLogout }) => {
useEffect(() => {
if (settings.defaultViewMode) setViewMode(settings.defaultViewMode)
if (settings.showHighlights !== undefined) setShowHighlights(settings.showHighlights)
// Apply default highlight visibility settings
setHighlightVisibility({
nostrverse: settings.defaultHighlightVisibilityNostrverse !== false,
friends: settings.defaultHighlightVisibilityFriends !== false,
mine: settings.defaultHighlightVisibilityMine !== false
})
// Always start with both panels collapsed on initial load
// Don't apply saved collapse settings on initial load - let user control them
}, [settings])

View File

@@ -20,6 +20,9 @@ const DEFAULT_SETTINGS: UserSettings = {
highlightColorNostrverse: '#9333ea',
highlightColorFriends: '#f97316',
highlightColorMine: '#ffff00',
defaultHighlightVisibilityNostrverse: true,
defaultHighlightVisibilityFriends: true,
defaultHighlightVisibilityMine: true,
}
interface SettingsProps {
@@ -256,6 +259,45 @@ const Settings: React.FC<SettingsProps> = ({ settings, onSave, onClose }) => {
<span>Start with highlights panel collapsed</span>
</label>
</div>
<div className="setting-group">
<label htmlFor="highlightVisibilityNostrverse" className="checkbox-label">
<input
id="highlightVisibilityNostrverse"
type="checkbox"
checked={localSettings.defaultHighlightVisibilityNostrverse !== false}
onChange={(e) => setLocalSettings({ ...localSettings, defaultHighlightVisibilityNostrverse: e.target.checked })}
className="setting-checkbox"
/>
<span>Show nostrverse highlights by default</span>
</label>
</div>
<div className="setting-group">
<label htmlFor="highlightVisibilityFriends" className="checkbox-label">
<input
id="highlightVisibilityFriends"
type="checkbox"
checked={localSettings.defaultHighlightVisibilityFriends !== false}
onChange={(e) => setLocalSettings({ ...localSettings, defaultHighlightVisibilityFriends: e.target.checked })}
className="setting-checkbox"
/>
<span>Show friends highlights by default</span>
</label>
</div>
<div className="setting-group">
<label htmlFor="highlightVisibilityMine" className="checkbox-label">
<input
id="highlightVisibilityMine"
type="checkbox"
checked={localSettings.defaultHighlightVisibilityMine !== false}
onChange={(e) => setLocalSettings({ ...localSettings, defaultHighlightVisibilityMine: e.target.checked })}
className="setting-checkbox"
/>
<span>Show my highlights by default</span>
</label>
</div>
</div>
</div>
</div>

View File

@@ -22,6 +22,10 @@ export interface UserSettings {
highlightColorNostrverse?: string
highlightColorFriends?: string
highlightColorMine?: string
// Default highlight visibility toggles
defaultHighlightVisibilityNostrverse?: boolean
defaultHighlightVisibilityFriends?: boolean
defaultHighlightVisibilityMine?: boolean
}
export async function loadSettings(