mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
80 lines
2.9 KiB
Swift
80 lines
2.9 KiB
Swift
import Foundation
|
|
import UIKit
|
|
import Display
|
|
import TelegramPresentationData
|
|
import LegacyUI
|
|
|
|
private final class LegacyICloudFileController: LegacyController, UIDocumentPickerDelegate {
|
|
let completion: ([URL]) -> Void
|
|
|
|
init(presentation: LegacyControllerPresentation, theme: PresentationTheme?, completion: @escaping ([URL]) -> Void) {
|
|
self.completion = completion
|
|
|
|
super.init(presentation: presentation, theme: theme)
|
|
}
|
|
|
|
required public init(coder aDecoder: NSCoder) {
|
|
fatalError("init(coder:) has not been implemented")
|
|
}
|
|
|
|
func documentPickerWasCancelled(_ controller: UIDocumentPickerViewController) {
|
|
self.completion([])
|
|
}
|
|
|
|
func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentsAt urls: [URL]) {
|
|
self.completion(urls)
|
|
}
|
|
|
|
func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentAt url: URL) {
|
|
self.completion([url])
|
|
}
|
|
}
|
|
|
|
public enum LegacyICloudFilePickerMode {
|
|
case `default`
|
|
case `import`
|
|
|
|
var documentPickerMode: UIDocumentPickerMode {
|
|
switch self {
|
|
case .default:
|
|
return .open
|
|
case .import:
|
|
return .import
|
|
}
|
|
}
|
|
}
|
|
|
|
public func legacyICloudFilePicker(theme: PresentationTheme, mode: LegacyICloudFilePickerMode = .default, documentTypes: [String] = ["public.item"], completion: @escaping ([URL]) -> Void) -> ViewController {
|
|
var dismissImpl: (() -> Void)?
|
|
let legacyController = LegacyICloudFileController(presentation: .modal(animateIn: true), theme: theme, completion: { urls in
|
|
dismissImpl?()
|
|
completion(urls)
|
|
})
|
|
legacyController.statusBar.statusBarStyle = .Black
|
|
|
|
let controller = UIDocumentPickerViewController(documentTypes: documentTypes, in: mode.documentPickerMode)
|
|
controller.delegate = legacyController
|
|
if #available(iOSApplicationExtension 11.0, iOS 11.0, *), case .default = mode {
|
|
controller.allowsMultipleSelection = true
|
|
}
|
|
|
|
legacyController.presentationCompleted = { [weak legacyController] in
|
|
if let legacyController = legacyController {
|
|
if let window = legacyController.view.window {
|
|
controller.popoverPresentationController?.sourceView = window
|
|
controller.popoverPresentationController?.sourceRect = CGRect(origin: CGPoint(x: window.bounds.width / 2.0, y: window.bounds.size.height - 1.0), size: CGSize(width: 1.0, height: 1.0))
|
|
window.rootViewController?.present(controller, animated: true)
|
|
legacyController.presentationCompleted = nil
|
|
}
|
|
}
|
|
}
|
|
|
|
dismissImpl = { [weak legacyController] in
|
|
if let legacyController = legacyController {
|
|
legacyController.dismiss()
|
|
}
|
|
}
|
|
legacyController.bind(controller: UIViewController())
|
|
return legacyController
|
|
}
|