diff options
Diffstat (limited to 'DomainDig/CloudSharingLifecycle.swift')
| -rw-r--r-- | DomainDig/CloudSharingLifecycle.swift | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/DomainDig/CloudSharingLifecycle.swift b/DomainDig/CloudSharingLifecycle.swift new file mode 100644 index 0000000..fc5de80 --- /dev/null +++ b/DomainDig/CloudSharingLifecycle.swift @@ -0,0 +1,31 @@ +import CloudKit +import UIKit + +final class DomainDigAppDelegate: NSObject, UIApplicationDelegate { + func application( + _ application: UIApplication, + configurationForConnecting connectingSceneSession: UISceneSession, + options: UIScene.ConnectionOptions + ) -> UISceneConfiguration { + let configuration = UISceneConfiguration(name: nil, sessionRole: connectingSceneSession.role) + configuration.delegateClass = DomainDigSceneDelegate.self + return configuration + } +} + +final class DomainDigSceneDelegate: NSObject, UIWindowSceneDelegate { + func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { + guard let metadata = connectionOptions.cloudKitShareMetadata else { return } + accept(metadata: metadata) + } + + func windowScene(_ windowScene: UIWindowScene, userDidAcceptCloudKitShareWith cloudKitShareMetadata: CKShare.Metadata) { + accept(metadata: cloudKitShareMetadata) + } + + private func accept(metadata: CKShare.Metadata) { + Task { + try? await CloudSyncService.shared.acceptShare(metadata: metadata) + } + } +} |
