Asset library: Download button with dismissable size/connection warning #145

Open
opened 2026-05-28 15:14:06 -04:00 by zgaetano · 0 comments
Owner

Summary

Add a Download button to assets in the library so operators can pull the full-length original ingest to local disk through the browser.

Because originals are frequently multi-GB and downloads are bandwidth-limited by whoever is hitting the server, the first time a user clicks Download they should see a one-time confirmation explaining that, with an option to never show again.

User-facing behaviour

Where the button lives

  • Per-asset action on the asset card (or inside the asset detail panel) in screens-library.jsx / screens-asset.jsx.
  • Disabled (or hidden) for assets that don't have an original_s3_key yet — same gate the panel uses for "Hi-Res".

Click flow

  1. First click (or any click while the warning is enabled): show a modal prompt with:
    • Title: "Download original ingest"
    • Body (operations register, terse, no marketing voice):

      You're about to download the full-length original ingest. Files can be multi-GB; download speed depends entirely on your network connection. Don't start this on a metered link or a busy uplink.

    • Buttons: Cancel · Download
    • Checkbox at the bottom: "Don't show this again on this device."
  2. If the checkbox was ticked, subsequent clicks skip the modal and start the download immediately.
  3. The download itself is a normal browser navigation to a presigned S3 URL (the same getSignedUrlForObject plumbing /api/v1/assets/:id/hires already produces) so it streams direct from broadcastmgmt.cloud without proxying through mam-api.

Preference storage

  • Use localStorage key like df.lib.download.warnDismissed (boolean). Per-device, per-user is acceptable for v1 — no need to persist server-side.
  • Surface a "re-enable the warning" toggle in Settings → Account so a user who clicked through too fast can get it back.

Out of scope for this issue

  • No queueing / batch downloader (one click, one file).
  • No browser progress UI beyond what the browser itself shows.
  • No download history log.

Acceptance criteria

  • Download button visible in the asset library and the asset detail screen for assets with original_s3_key.
  • First-time click opens the warning modal with Cancel / Download / "Don't show again" checkbox.
  • Ticking the checkbox persists to localStorage and is honoured on subsequent clicks.
  • Download is a presigned-URL navigation, no full proxy round-trip through mam-api.
  • Settings → Account exposes a control to re-enable the warning.
## Summary Add a **Download** button to assets in the library so operators can pull the full-length original ingest to local disk through the browser. Because originals are frequently multi-GB and downloads are bandwidth-limited by whoever is hitting the server, the first time a user clicks Download they should see a one-time confirmation explaining that, with an option to **never show again**. ## User-facing behaviour ### Where the button lives - Per-asset action on the asset card (or inside the asset detail panel) in `screens-library.jsx` / `screens-asset.jsx`. - Disabled (or hidden) for assets that don't have an `original_s3_key` yet — same gate the panel uses for "Hi-Res". ### Click flow 1. **First click (or any click while the warning is enabled):** show a modal prompt with: - Title: *"Download original ingest"* - Body (operations register, terse, no marketing voice): > You're about to download the full-length original ingest. Files can be multi-GB; download speed depends entirely on your network connection. Don't start this on a metered link or a busy uplink. - Buttons: **Cancel** · **Download** - Checkbox at the bottom: *"Don't show this again on this device."* 2. **If the checkbox was ticked,** subsequent clicks skip the modal and start the download immediately. 3. **The download itself** is a normal browser navigation to a presigned S3 URL (the same `getSignedUrlForObject` plumbing `/api/v1/assets/:id/hires` already produces) so it streams direct from `broadcastmgmt.cloud` without proxying through `mam-api`. ### Preference storage - Use `localStorage` key like `df.lib.download.warnDismissed` (boolean). Per-device, per-user is acceptable for v1 — no need to persist server-side. - Surface a "re-enable the warning" toggle in Settings → Account so a user who clicked through too fast can get it back. ## Out of scope for this issue - No queueing / batch downloader (one click, one file). - No browser progress UI beyond what the browser itself shows. - No download history log. ## Acceptance criteria - [ ] Download button visible in the asset library and the asset detail screen for assets with `original_s3_key`. - [ ] First-time click opens the warning modal with Cancel / Download / "Don't show again" checkbox. - [ ] Ticking the checkbox persists to localStorage and is honoured on subsequent clicks. - [ ] Download is a presigned-URL navigation, no full proxy round-trip through `mam-api`. - [ ] Settings → Account exposes a control to re-enable the warning.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: WildDragonLLC/dragonflight#145
No description provided.