Repository navigation
What's New
- Migrated all asynchronous APIs from google/promises to Swift concurrency, built in Swift 6 language mode (#44)
- Added cooperative cancellation: cancelling the calling task ends a
CloudProvidercall withCancellationError, while mutations past their commit point still finish so vault folders are never left half-created or half-deleted (#44) downloadFilenow returns theCloudItemMetadataof the downloaded file, anddownloadFile/uploadFiletake an explicitprogress:parameter (#44)- Replaced unmaintained SDK forks with official SDKs or direct API calls: box-ios-sdk 10.17.0, SwiftyDropbox 10.2.4 (stored Dropbox logins keep working), direct Microsoft Graph API calls, and cryptomator/JOSESwift 3.0.0
Breaking Changes
- Bumped minimum iOS deployment target from 16.0 to 17.0 and minimum Swift version to 6.2
- Every API that returned a
Promiseis nowasync throws;CloudProviderisSendablewith@concurrentmethods, all providers arefinal, and all authenticators are@MainActor(#44) - Removed the google/promises and Microsoft Graph SDK dependencies, and updated cryptolib-swift to 2.0.0, AppAuth to 3.0.0, GTMAppAuth to 6.0.0 and MSAL to 2.16.0
DropboxAuthenticator.handleRedirectURL(_:)replacespendingAuthenticationandprocessAuthentication(with:)(#44)- See Migrating to 4.0.0 in the README for the complete list
Bug Fixes
- Fixed
LocalFileSystemProviderto release security-scoped access after every operation and to coordinate concurrent access to the same item (#44) - Fixed
BoxAuthenticatorhanging on unexpected errors and mapped a cancelled login toCocoaError(.userCancelled)(#44) - Fixed
S3CloudProvider.downloadFilereporting success when the transfer of an existing file failed (#44) - Fixed TLS certificate fingerprints being truncated instead of a full SHA-256 hash (#44)
- Fixed Dropbox progress finishing early when a transfer was retried (#44)
Full Changelog: 3.0.1...4.0.0