diff --git a/Sources/Filestack/Internal/Requests/LogoutRequest.swift b/Sources/Filestack/Internal/Requests/LogoutRequest.swift index baf48d6a..4c1d32f3 100644 --- a/Sources/Filestack/Internal/Requests/LogoutRequest.swift +++ b/Sources/Filestack/Internal/Requests/LogoutRequest.swift @@ -31,7 +31,7 @@ final class LogoutRequest { let task = URLSession.filestackDefault.dataTask(with: request) { (data, response, error) in let response = LogoutResponse(error: error) - completionBlock(response) + DispatchQueue.main.async { completionBlock(response) } } task.resume() diff --git a/Sources/Filestack/Public/Models/Client.swift b/Sources/Filestack/Public/Models/Client.swift index fb6eb9d4..4614299b 100644 --- a/Sources/Filestack/Public/Models/Client.swift +++ b/Sources/Filestack/Public/Models/Client.swift @@ -345,7 +345,9 @@ private extension Client { } // Set the presentation context provider - session.presentationContextProvider = self + if #available(iOS 13.0, *) { + session.presentationContextProvider = self + } // Keep a strong reference to the auth session. self.safariAuthSession = session diff --git a/Sources/Filestack/UI/Internal/Controllers/DocumentPickerUploadController.swift b/Sources/Filestack/UI/Internal/Controllers/DocumentPickerUploadController.swift index 35a272cb..0ed8be10 100644 --- a/Sources/Filestack/UI/Internal/Controllers/DocumentPickerUploadController.swift +++ b/Sources/Filestack/UI/Internal/Controllers/DocumentPickerUploadController.swift @@ -17,14 +17,22 @@ class DocumentPickerUploadController: URLPickerUploadController { viewController: UIViewController, config: Config, completionBlock: (([URL]) -> Void)? = nil) { - let allowedContentTypes = config.documentPickerAllowedUTIs.compactMap { UTIString in - if let contentType = UTType(UTIString) { - return contentType - } else { - return nil - } + if #available(iOS 14.0, *) { + let allowedContentTypes: [UTType] = config.documentPickerAllowedUTIs + .compactMap { UTType($0) } + self.picker = UIDocumentPickerViewController( + forOpeningContentTypes: allowedContentTypes.isEmpty ? [UTType.item] : allowedContentTypes, + asCopy: true + ) + } else { + let docTypes: [String] = config.documentPickerAllowedUTIs.isEmpty + ? ["public.item"] + : config.documentPickerAllowedUTIs + self.picker = UIDocumentPickerViewController( + documentTypes: docTypes, + in: .import + ) } - self.picker = UIDocumentPickerViewController(forOpeningContentTypes: allowedContentTypes.isEmpty ? [.item] : allowedContentTypes, asCopy: true) super.init(uploader: uploader, viewController: viewController, presentedViewController: picker, diff --git a/Sources/Filestack/UI/Internal/PhotoPicker/AlbumList/AlbumListViewController.swift b/Sources/Filestack/UI/Internal/PhotoPicker/AlbumList/AlbumListViewController.swift index 767a1309..35732afd 100644 --- a/Sources/Filestack/UI/Internal/PhotoPicker/AlbumList/AlbumListViewController.swift +++ b/Sources/Filestack/UI/Internal/PhotoPicker/AlbumList/AlbumListViewController.swift @@ -79,7 +79,13 @@ private extension AlbumListViewController { private extension AlbumListViewController { func createAndStartLaodingView() { DispatchQueue.main.async { - let indicator = UIActivityIndicatorView(style: .medium) + let style: UIActivityIndicatorView.Style + if #available(iOS 13.0, *) { + style = .medium + } else { + style = .gray + } + let indicator = UIActivityIndicatorView(style: style) indicator.center = self.view.center indicator.startAnimating() self.view.addSubview(indicator)