Context
Currently, the /agenda command fetches and displays events from all active calendars synced with Morgen. However, users might want to declutter their daily/weekly view by hiding specific calendars (e.g., secondary projects, holidays, or shared calendars) without disabling them entirely in the Morgen app.
Problem
There is no way to filter which calendars are shown in the bot's agenda, leading to a crowded and potentially confusing output for users with many active calendars.
Proposed Solution
Implement a configuration flow that allows users to manage calendar visibility directly from the bot. We need to evaluate and decide the best approach:
- Blacklist approach: Save the IDs of calendars the user explicitly wants to hide.
- Whitelist approach: Save the IDs of calendars the user explicitly wants to show.
These preferences will be stored in the bot's local database. The /agenda command will then use this data to filter out unwanted events before displaying them.
Acceptance Criteria
Technical Notes
- Depending on the chosen approach, update the local DB schema to include a
hidden_calendar_ids or visible_calendar_ids field (likely an array or a related table).
- Ensure the filtering happens efficiently, either by requesting only specific calendars from the Morgen API (if supported) or by filtering the fetched results locally before displaying them.
Context
Currently, the
/agendacommand fetches and displays events from all active calendars synced with Morgen. However, users might want to declutter their daily/weekly view by hiding specific calendars (e.g., secondary projects, holidays, or shared calendars) without disabling them entirely in the Morgen app.Problem
There is no way to filter which calendars are shown in the bot's agenda, leading to a crowded and potentially confusing output for users with many active calendars.
Proposed Solution
Implement a configuration flow that allows users to manage calendar visibility directly from the bot. We need to evaluate and decide the best approach:
These preferences will be stored in the bot's local database. The
/agendacommand will then use this data to filter out unwanted events before displaying them.Acceptance Criteria
/calendarsor an inline keyboard menu) to list all available calendars and allow the user to toggle their visibility./agendacommand logic to filter out events belonging to hidden calendars before sending the message.Technical Notes
hidden_calendar_idsorvisible_calendar_idsfield (likely an array or a related table).