Skip to content

Single-event calendar actions do not download the available .ics file #2301

Description

@Ulbrec87

Terms

Behavior

The frontend currently shows a calendar action for individual events in two places:

  • The event About page.
  • The event card tooltip/menu.

Both actions currently call an empty downloadCalendarEntry function, so selecting them has no effect.

The existing accessible label, “Download the calendar entry for this event”, indicates that these actions are intended to download the individual event rather than create a persistent calendar subscription.

The backend already exposes a public endpoint for exporting one event:

GET /v1/events/event_calendar?event_id=<UUID>

The endpoint returns an iCalendar file and provides a suggested filename through the Content-Disposition response header.

Selecting either action should request this endpoint using the selected event ID and download the returned .ics file. The filename should come from Content-Disposition when available, with a safe .ics fallback otherwise.

Both entry points should use a shared frontend implementation and follow the project’s existing public API proxy, error-handling, accessibility and localization patterns. Any temporary browser resources created for the download should also be cleaned up.

Since this is a static export for one event, “Add to calendar” may be more accurate than “Subscribe to event”. The final wording should be confirmed by the maintainers.

Scope

This issue only covers the two existing calendar actions for individual events.

Organization and group calendar actions should remain unchanged. Their export and subscription behavior was discussed separately in #1448 and PR #1483.

No backend changes are expected.

Acceptance criteria

  • Both single-event actions download the .ics file for the correct event.
  • Both entry points use the same shared implementation.
  • The filename is read from Content-Disposition when available, with a safe fallback otherwise.
  • Failed requests show accessible feedback using the project’s i18n system, without unhandled exceptions.
  • Keyboard activation triggers only one download.
  • Temporary browser resources are cleaned up.
  • Relevant frontend tests are added.

Related work

Contribution

I would be happy to implement this after confirmation from the maintainers.

Metadata

Metadata

Labels

-next release-Included in the next releasefrontendRelates to the project frontendhelp wantedExtra attention is neededtypescriptRelates to TypeScript codevueRelates to Vue code

Type

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions