Skip to content

Commit 8e2ff72

Browse files
authored
Merge pull request insidegui#432 from insidegui/ah/431
Implements 431, copy URL to clipboard
2 parents 387e4a5 + ea24a45 commit 8e2ff72

3 files changed

Lines changed: 46 additions & 0 deletions

File tree

WWDC/AppCoordinator+SessionActions.swift

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,37 @@ extension AppCoordinator: SessionActionsViewControllerDelegate {
165165
guard let url = URL(string: webpageAsset.remoteURL) else { return }
166166

167167
let picker = NSSharingServicePicker(items: [url])
168+
picker.delegate = PickerDelegate.shared
168169
picker.show(relativeTo: .zero, of: sender, preferredEdge: .minY)
169170
}
170171
}
172+
173+
final class PickerDelegate: NSObject, NSSharingServicePickerDelegate {
174+
175+
static let shared = PickerDelegate()
176+
177+
func sharingServicePicker(_ sharingServicePicker: NSSharingServicePicker, sharingServicesForItems items: [Any], proposedSharingServices proposedServices: [NSSharingService]) -> [NSSharingService] {
178+
179+
let copyService = NSSharingService(title: "Copy URL", image: #imageLiteral(resourceName: "copy"), alternateImage: nil) {
180+
181+
if let url = items.first as? URL {
182+
183+
NSPasteboard.general.clearContents()
184+
if !NSPasteboard.general.setString(url.absoluteString, forType: .string) {
185+
os_log("Failed to copy URL",
186+
log: .default,
187+
type: .error)
188+
}
189+
} else {
190+
os_log("Sharing expects a URL and did not receive one",
191+
log: .default,
192+
type: .error)
193+
}
194+
}
195+
196+
var proposedServices = proposedServices
197+
proposedServices.insert(copyService, at: 0)
198+
199+
return proposedServices
200+
}
201+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
{
2+
"images" : [
3+
{
4+
"idiom" : "universal",
5+
"filename" : "copy.pdf"
6+
}
7+
],
8+
"info" : {
9+
"version" : 1,
10+
"author" : "xcode"
11+
},
12+
"properties" : {
13+
"template-rendering-intent" : "template"
14+
}
15+
}
3.98 KB
Binary file not shown.

0 commit comments

Comments
 (0)