From 1b55fdad5984841334e864db942693cfef10e645 Mon Sep 17 00:00:00 2001 From: Ruben Beltran del Rio Date: Thu, 18 Dec 2025 15:13:52 +0100 Subject: Add sharing --- .../Base Components/CollaborationButton.swift | 51 ++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 Map/Presentation/Base Components/CollaborationButton.swift (limited to 'Map/Presentation/Base Components/CollaborationButton.swift') diff --git a/Map/Presentation/Base Components/CollaborationButton.swift b/Map/Presentation/Base Components/CollaborationButton.swift new file mode 100644 index 0000000..49dd2c5 --- /dev/null +++ b/Map/Presentation/Base Components/CollaborationButton.swift @@ -0,0 +1,51 @@ +import SharedWithYou +import SwiftUI + +struct CollaborationButton: NSViewRepresentable { + let fileURL: URL + + func makeNSView(context: Context) -> SWCollaborationView { + let itemProvider = NSItemProvider(contentsOf: fileURL)! + let view = SWCollaborationView(itemProvider: itemProvider) + + view.activeParticipantCount = 0 + view.cloudSharingDelegate = context.coordinator + + return view + } + + func updateNSView(_ nsView: SWCollaborationView, context: Context) { + // Update participant count as needed + } + + func makeCoordinator() -> Coordinator { + Coordinator(fileURL: fileURL) + } + + class Coordinator: NSObject, NSCloudSharingServiceDelegate { + let fileURL: URL + + init(fileURL: URL) { + self.fileURL = fileURL + } + + func sharingService( + _ sharingService: NSSharingService, + didFailToShareItems items: [Any], + error: Error + ) { + print("Failed to share: \(error)") + } + + func sharingService( + _ sharingService: NSSharingService, + didCompleteForItems items: [Any] + ) { + print("Sharing completed") + } + + func options(for: NSSharingService, share: NSItemProvider) -> NSSharingService.CloudKitOptions { + return [.allowPublic, .allowPrivate, .allowReadWrite] + } + } +} -- cgit