For attachments that aren't a video, image or text, we previously rendered an error message about the attachment being unsupported.
This PR changes the behaviour so we instead render a button to download the attachment as a file. It:
Works with Base64 or text as the body
Honours the user-specified fileName from the message if present, generates a filename with the correct extension for the media type if not
Uses the URL.createObjectURL API, only creating the URL when first requested and cleaning up again when the component is unmounted - so we are doing this in a standards-compliant way without having to externalise a file or crash the browser
It also includes some slight rework in the Gherkin document accordion, so a panel is only rendered when it's expanded - previously this was just hidden by way of display: none. This means we don't render components unless the user is going to see them, and also that any generated download URLs are cleaned up when a panel is closed.
ā”ļø What's your motivation?
Fixes #80.
š·ļø What kind of change is this?
:bank: Refactoring/debt/DX (improvement to code design, tooling, documentation etc. without changing behaviour)
:zap: New feature (non-breaking change which adds new behaviour)
š¤ What's changed?
For attachments that aren't a video, image or text, we previously rendered an error message about the attachment being unsupported.
This PR changes the behaviour so we instead render a button to download the attachment as a file. It:
fileName
from the message if present, generates a filename with the correct extension for the media type if notURL.createObjectURL
API, only creating the URL when first requested and cleaning up again when the component is unmounted - so we are doing this in a standards-compliant way without having to externalise a file or crash the browserIt also includes some slight rework in the Gherkin document accordion, so a panel is only rendered when it's expanded - previously this was just hidden by way of
display: none
. This means we don't render components unless the user is going to see them, and also that any generated download URLs are cleaned up when a panel is closed.ā”ļø What's your motivation?
Fixes #80.
š·ļø What kind of change is this?
š Checklist:
This text was originally generated from a template, then edited by hand. You can modify the template here.