Description:
Currently, the downloader only supports "Start" and "Cancel." If a user needs to stop a download temporarily (e.g., switching from Wi-Fi to Data), they have to cancel the download and lose all progress. We need to implement a Pause/Resume mechanism to improve the user experience for large game files.
Proposed Functionality:
- Add a Pause button to active downloads in the
DownloadsScreen.
- Add a Resume button for tasks with a "Paused" status.
- Support for "Partial Downloads" so that the app only downloads the remaining bytes instead of restarting from zero.
Technical Requirements:
- HTTP Range Support: Use the
Range header in Dio (e.g., Range: bytes=start-).
- State Management: Update
DownloadStatus enum to include a paused state.
- File Management: Instead of overwriting files, the downloader must append data to the existing
.pkg file in the temporary directory.
- Persistence: The current byte count must be saved so the app knows where to resume after a restart.
Constraints:
- We must verify if the NPS servers support the
Accept-Ranges header (most modern CDNs do).
- Decryption should only trigger once the full file is verified.
Category: Feature Request / Enhancement
Priority: High (Essential for large 1GB+ titles)
Description:
Currently, the downloader only supports "Start" and "Cancel." If a user needs to stop a download temporarily (e.g., switching from Wi-Fi to Data), they have to cancel the download and lose all progress. We need to implement a Pause/Resume mechanism to improve the user experience for large game files.
Proposed Functionality:
DownloadsScreen.Technical Requirements:
Rangeheader inDio(e.g.,Range: bytes=start-).DownloadStatusenum to include apausedstate..pkgfile in the temporary directory.Constraints:
Accept-Rangesheader (most modern CDNs do).Category: Feature Request / Enhancement
Priority: High (Essential for large 1GB+ titles)