-
Notifications
You must be signed in to change notification settings - Fork 40
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Display download progress #1104
Comments
Cross-referencing to Conversation Pane refinement EPIC in SD-UX repo. |
Just adding some user feedback on this - any indication of download progress would be very useful as it's not currently clear whether a download is still in progress or has failed: "We've not yet successfully downloaded any files larger than a megabyte, whereas we frequently receive files of up to 500Mb. All I see is "Downloading" for long periods (involving multiple screenlocks) until giving up after an hour or so." |
Last Thursday @tina-ux and I discussed @eloquence's question in #1104 (comment):
When downloading messages and files we already do— securedrop-client/securedrop_client/api_jobs/downloads.py Lines 318 to 320 in 8aa77b8
—meaning that we have access to both (a) the actual size of the file we're downloading and (b) an estimate of how long it should take to download. When fetching metadata takes a long time, it appears that we do get a securedrop-client/tests/functional/cassettes/test_login_as_journalist.yaml Lines 150 to 152 in 8b2f0d4
In either case, to report on actual progress, we'll need |
|
Yes, exactly. |
Ok, so the only small issue I see there is we probably want another option ( I haven't looked at the proxy code. Do you have a sense of how readily those changes could be made? Even if we haven't finalized the UX implications for the client (in terms of how we report on the download speed/progress), we could start by making sure the info is accessible in the client. |
Display a vanilla progress bar for file downloads that simply shows how much of the file has been downloaded so far. A new FileDownloadProgressBar widget replaces the existing animated spinner, and we inject a signal through to the SDK to pass the current progress back to the widget. TODO: * Download speed? * Visual alignment issue; need padding on the right side * tests? Fixes #1104.
I've submitted #2327 as a pretty naive implementation; it just has a progress bar with a numerical % of how much has been completed using the builtin QProgressBar widget. I think it would be straightforward to add speed as well; just need to think a bit on how to lay that out visually. Edit: I've included download speed |
Display a vanilla progress bar for file downloads that simply shows how much of the file has been downloaded so far. A new FileDownloadProgressBar widget replaces the existing animated spinner, and we inject a signal through to the SDK to pass the current progress back to the widget. TODO: * Visual alignment issue; need padding on the right side * tests? Fixes #1104.
Display a vanilla progress bar for file downloads that simply shows how much of the file has been downloaded so far. A new FileDownloadProgressBar widget replaces the existing animated spinner, and we inject a signal through to the SDK to pass the current progress back to the widget. TODO: * Visual alignment issue; need padding on the right side * tests? Fixes #1104.
Display a vanilla progress bar for file downloads that simply shows how much of the file has been downloaded so far. A new FileDownloadProgressBar widget replaces the existing animated spinner, and we inject a signal through to the SDK to pass the current progress back to the widget. TODO: * Visual alignment issue; need padding on the right side * tests? Fixes #1104.
Display a vanilla progress bar for file downloads that simply shows how much of the file has been downloaded so far. A new FileDownloadProgressBar widget replaces the existing animated spinner, and we inject a signal through to the SDK to pass the current progress back to the widget. The widget both displays the overall total progress as a percentage and also calculates the download speed by using an exponential moving average to smooth it out. A timer runs every 100ms to recalculate the speed. A new utils.humanize_speed() is used to translate the raw bytes/second into a human-readable version with a focus on keeping the length of the string roughly consistent so there's less visual shifting. TODO: * Visual alignment issue; need padding on the right side * tests? Fixes #1104.
Display a vanilla progress bar for file downloads that simply shows how much of the file has been downloaded so far. A new FileDownloadProgressBar widget replaces the existing animated spinner, and we inject a signal through to the SDK to pass the current progress back to the widget. The widget both displays the overall total progress as a percentage and also calculates the download speed by using an exponential moving average to smooth it out. A timer runs every 100ms to recalculate the speed. A new utils.humanize_speed() is used to translate the raw bytes/second into a human-readable version with a focus on keeping the length of the string roughly consistent so there's less visual shifting. TODO: * Visual alignment issue; need padding on the right side * tests? Fixes #1104.
Display a vanilla progress bar for file downloads that simply shows how much of the file has been downloaded so far. A new FileDownloadProgressBar widget replaces the existing animated spinner, and we inject a signal through to the SDK to pass the current progress back to the widget. The widget both displays the overall total progress as a percentage and also calculates the download speed by using an exponential moving average to smooth it out. A timer runs every 100ms to recalculate the speed. A new utils.humanize_speed() is used to translate the raw bytes/second into a human-readable version with a focus on keeping the length of the string roughly consistent so there's less visual shifting. TODO: * Visual alignment issue; need padding on the right side * tests? Fixes #1104.
FYI, I've been using byzanz (available in dom0 repos) to "record" the screen into gifs. Here's a usage example:
|
Display a vanilla progress bar for file downloads that simply shows how much of the file has been downloaded so far. A new FileDownloadProgressBar widget replaces the existing animated spinner, and we inject a signal through to the SDK to pass the current progress back to the widget. The widget both displays the overall total progress as a percentage and also calculates the download speed by using an exponential moving average to smooth it out. A timer runs every 100ms to recalculate the speed. A new utils.humanize_speed() is used to translate the raw bytes/second into a human-readable version with a focus on keeping the length of the string roughly consistent so there's less visual shifting. Once the download has finished, an indeterminate progress bar is shown while decrypting since we don't (currently) have a way to report specific progress on that. TODO: * tests? Fixes #1104.
We're currently only displaying a spinner for download activity. For a large download, it would be useful to let the user know how much of the file has already been downloaded.
Key questions to address include:
The text was updated successfully, but these errors were encountered: