XcodesOrg / XcodesApp

The easiest way to install and switch between multiple versions of Xcode - with a mouse click.
MIT License
6.67k stars 293 forks source link

Add ability to cancel runtime downloads #453

Closed MattKiazyk closed 7 months ago

MattKiazyk commented 7 months ago

When downloading runtimes, they sometimes can take a long time. This adds the ability to cancel a runtime as it's downloading.

This keeps the continuation of moving away from Combine into Swift Concurrency by using AsyncThrowingStream. Which the progress streams back as it downloads. This is a new one for me and things seem to be working. I could only get it to work by wrapping the process code around a Task INSIDE the return AsyncThrowingStream<Progress, Error> { continuation in.

I did add a TODO around progress warning. I believe ProgressWrapper combines the latest which stops me from just passing a new Progress back

Cancel on Info Confirm cancel
Screenshot 2023-12-02 at 9 31 56 AM Screenshot 2023-12-02 at 9 32 01 AM