feat(calendars): add app-side enable/disable for calendars
Introduce a second, heavier visibility level above the per-view hide filter. A disabled calendar is removed from the app's surfaces entirely — its events drop out of all views and search, and it disappears from the drawer filter list, the event-form calendar picker and the import target picker. It stays listed only in Settings → Calendars, where a per-row switch toggles it, so it can always be brought back. - CalendarPrefs: disabledCalendarIds set + setter, mirroring the hidden set (DataStore comma-separated string); never touches the system VISIBLE/SYNC_EVENTS flags, so it's app-local and reversible. - CalendarRepositoryImpl: instances()/searchEvents() exclude calendarId ∈ (hidden ∪ disabled). distinctUntilChanged() on instances collapses the transient duplicate emission both DataStore-derived sets produce when either is toggled. - FilterViewModel: drop disabled calendars from the drawer filter list. - EventEditViewModel: exclude disabled from writableCalendars; a last-used preselect on a now-disabled calendar falls back to the first remaining writable one. - ImportViewModel: exclude disabled from the import target list. - CalendarsScreen/ViewModel: per-row enable/disable Switch on both the local and synced groups; disabled rows render dimmed (new GroupedRow `dimmed` flag) while keeping the toggle live. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -317,6 +317,8 @@
|
||||
<string name="calendars_local_header">Your calendars</string>
|
||||
<string name="calendars_local_empty">No local calendars yet. Create one to keep events on this device only.</string>
|
||||
<string name="calendars_add">Add calendar</string>
|
||||
<string name="calendars_disable_hint">Turn a calendar off to remove it from the app — its events, filters and pickers. Nothing is deleted, and you can turn it back on here anytime.</string>
|
||||
<string name="calendars_show_in_app_a11y">Show \"%1$s\" in the app</string>
|
||||
<string name="calendars_synced_header">Synced calendars</string>
|
||||
<string name="calendars_synced_hint">These come from accounts on your device. Create and edit them in their own app.</string>
|
||||
<string name="calendars_manage_in_app">Manage</string>
|
||||
|
||||
Reference in New Issue
Block a user