summaryrefslogtreecommitdiff
path: root/DomainDig/CloudSharingLifecycle.swift
diff options
context:
space:
mode:
Diffstat (limited to 'DomainDig/CloudSharingLifecycle.swift')
-rw-r--r--DomainDig/CloudSharingLifecycle.swift31
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)
+ }
+ }
+}