It could be that this archive is not accessible any more for whatever reason. Write-only file systems, quarantined files, etc. Whatever the reason, Cura shouldn't crash on this because it's not in Cura's control.
Contributes to issue CURA-8609.
It could be that the archive fails to save because the user doesn't have access to its own temporary folder, the firewall quarantines the archive, there's not enough disk space, whatever. These errors need to be handled and not crash Cura.
Contributes to issue CURA-8609.
This indicates how we're using it, and also allows for use of symbols in the code rather than strings, which integrate better with tooling.
Contributes to issue CURA-8609.
Partialmethod is not callable apparently. I think the problem is that it's calling the method outside of the scope of the class here. I'm probably not using it right. Lambas are easier since they automatically take their scope along with them.
Contributes to issue CURA-8609.
Apparently the API is now a PUT request rather than a GET request. It needs a bit more metadata which can be hard-coded for our client.
Contributes to issue CURA-8609.
This way we can ask the printer status from QML even if it's updated via a job on a different thread and different class and all that.
Contributes to issue CURA-8609.
Apparently the Cloud will need to know the file size before it gets uploaded. It is used as a redundancy code to verify that it's not corrupt there.
Perhaps they should ask for a CRC instead, being more reliable against an upload containing only null bytes or whatever, but that is not up to me to decide.
Contributes to issue CURA-8609.
It's not considered a big use case when the user has already added some printers but would want to add more while syncing materials to those printers.
Contributes to issue CURA-8609.
This allows the user to see the welcome screen instructions again. Or to switch back to internet-syncing if they accidentally pressed the USB button (or were just curious).
Contributes to issue CURA-8609.
Steps involved are:
- Create an archive of all materials.
- Request the cloud API to provide a URL to upload the archive to.
- Upload the archive to that API.
Currently the two internet requests are asynchronous, meaning that the job will 'end' before the upload is complete. Most likely the job instance will even be deleted before we get a response from the server. So this won't work, really. Need to structure that a bit differently. But I want to save this progress because it embodies the happy path well.
Contributes to issue CURA-8609.
We can only sync with printers that are currently online.
We'll just send it to the account to sync with everything. But these are the ones it should arrive with.
Contributes to issue CURA-8609.
I have a feeling this will be abused later. But fine. We currently need it for the list of printers that we can sync materials to via the cloud.
Contributes to issue CURA-8609.
Not only do I now have an interface where the user doesn't get any feedback when syncing happens, but even in the log there was nothing shown when it happens.
Contributes to issue CURA-8609.
This updates the metadata entries. Naturally this updates every 60 seconds in Cura, but it could also manually be triggered by the refresh button.
Contributes to issue CURA-8609.
It's a little bit weird with the hidden global stack system when there's a cluster of various types of printers. But it should behave the same way.
Contributes to issue CURA-8609.