aboutsummaryrefslogtreecommitdiff
path: root/Hotline/macOS/Trackers/TrackerView.swift
diff options
context:
space:
mode:
authorDustin Mierau <dustin@mierau.me>2025-11-08 12:33:00 -0800
committerDustin Mierau <dustin@mierau.me>2025-11-08 12:33:00 -0800
commit286c408370681b022deaabd254d499aefec28add (patch)
tree8dd76ca8e362513c34a444f921debcc28eab6a76 /Hotline/macOS/Trackers/TrackerView.swift
parent2f332ee497af925db1a2583135e9dfcdaff84794 (diff)
Some work on making it possible to connect to servers with an IPv6 address. Improve connect form a bit. Add Copy Link to context menu for servers and trackers.
Diffstat (limited to 'Hotline/macOS/Trackers/TrackerView.swift')
-rw-r--r--Hotline/macOS/Trackers/TrackerView.swift50
1 files changed, 40 insertions, 10 deletions
diff --git a/Hotline/macOS/Trackers/TrackerView.swift b/Hotline/macOS/Trackers/TrackerView.swift
index 0eb4a12..dbbacaa 100644
--- a/Hotline/macOS/Trackers/TrackerView.swift
+++ b/Hotline/macOS/Trackers/TrackerView.swift
@@ -405,14 +405,13 @@ struct TrackerView: View {
@ViewBuilder
func bookmarkServerContextMenu(_ server: BookmarkServer) -> some View {
Button {
- let newBookmark = Bookmark(type: .server, name: server.name ?? server.address, address: server.address, port: server.port, login: nil, password: nil)
- Bookmark.add(newBookmark, context: modelContext)
+ NSPasteboard.general.clearContents()
+ let displayAddress = (server.port == HotlinePorts.DefaultServerPort) ? server.address : "\(server.address):\(server.port)"
+ NSPasteboard.general.setString("hotline://\(displayAddress)", forType: .string)
} label: {
- Label("Bookmark", systemImage: "bookmark")
+ Label("Copy Link", systemImage: "link")
}
- Divider()
-
Button {
NSPasteboard.general.clearContents()
let displayAddress = (server.port == HotlinePorts.DefaultServerPort) ? server.address : "\(server.address):\(server.port)"
@@ -420,11 +419,31 @@ struct TrackerView: View {
} label: {
Label("Copy Address", systemImage: "doc.on.doc")
}
+
+ Divider()
+
+ Button {
+ let newBookmark = Bookmark(type: .server, name: server.name ?? server.address, address: server.address, port: server.port, login: nil, password: nil)
+ Bookmark.add(newBookmark, context: modelContext)
+ } label: {
+ Label("Bookmark", systemImage: "bookmark")
+ }
}
@ViewBuilder
func bookmarkContextMenu(_ bookmark: Bookmark) -> some View {
Button {
+ let linkString: String = switch bookmark.type {
+ case .tracker: "hotlinetracker://\(bookmark.displayAddress)"
+ case .server: "hotline://\(bookmark.displayAddress)"
+ }
+ NSPasteboard.general.clearContents()
+ NSPasteboard.general.setString(linkString, forType: .string)
+ } label: {
+ Label("Copy Link", systemImage: "link")
+ }
+
+ Button {
NSPasteboard.general.clearContents()
NSPasteboard.general.setString(bookmark.displayAddress, forType: .string)
} label: {
@@ -471,14 +490,13 @@ struct TrackerView: View {
guard let server = bonjourServer.server else {
return
}
- let newBookmark = Bookmark(type: .server, name: server.name ?? server.address, address: server.address, port: server.port, login: nil, password: nil)
- Bookmark.add(newBookmark, context: modelContext)
+ NSPasteboard.general.clearContents()
+ let displayAddress = (server.port == HotlinePorts.DefaultServerPort) ? server.address : "\(server.address):\(server.port)"
+ NSPasteboard.general.setString("hotline://\(displayAddress)", forType: .string)
} label: {
- Label("Bookmark", systemImage: "bookmark")
+ Label("Copy Link", systemImage: "link")
}
- Divider()
-
Button {
guard let server = bonjourServer.server else {
return
@@ -488,6 +506,18 @@ struct TrackerView: View {
} label: {
Label("Copy Address", systemImage: "doc.on.doc")
}
+
+ Divider()
+
+ Button {
+ guard let server = bonjourServer.server else {
+ return
+ }
+ let newBookmark = Bookmark(type: .server, name: server.name ?? server.address, address: server.address, port: server.port, login: nil, password: nil)
+ Bookmark.add(newBookmark, context: modelContext)
+ } label: {
+ Label("Bookmark", systemImage: "bookmark")
+ }
}
func refresh() {