aboutsummaryrefslogtreecommitdiff
path: root/iGopherBrowser/BrowserView.swift
diff options
context:
space:
mode:
Diffstat (limited to 'iGopherBrowser/BrowserView.swift')
-rw-r--r--iGopherBrowser/BrowserView.swift105
1 files changed, 47 insertions, 58 deletions
diff --git a/iGopherBrowser/BrowserView.swift b/iGopherBrowser/BrowserView.swift
index 47c0ead..e633108 100644
--- a/iGopherBrowser/BrowserView.swift
+++ b/iGopherBrowser/BrowserView.swift
@@ -55,7 +55,7 @@ struct BrowserView: View {
@State private var scrollToTop: Bool = false
@State var currentTask: Task<Void, Never>?
-
+
let client = GopherClient()
var body: some View {
@@ -173,7 +173,9 @@ struct BrowserView: View {
}
}
.onChange(of: selectedSearchItem) {
- self.showSearchInput = true
+ if let selectedSearchItem = selectedSearchItem {
+ self.showSearchInput = true
+ }
}
}
.sheet(isPresented: $showSearchInput) {
@@ -261,21 +263,8 @@ struct BrowserView: View {
}
Spacer()
Button {
- if let curNode = backwardStack.popLast() {
- forwardStack.append(curNode)
- if let prevNode = backwardStack.popLast() {
- TelemetryManager.send(
- "applicationClickedBack",
- with: [
- "gopherURL":
- "\(prevNode.host):\(prevNode.port)\(prevNode.selector)"
- ])
- performGopherRequest(
- host: prevNode.host, port: prevNode.port,
- selector: prevNode.selector,
- clearForward: false)
- }
- }
+ goBack();
+
} label: {
Label("Back", systemImage: "chevron.left")
.labelStyle(.iconOnly)
@@ -283,18 +272,7 @@ struct BrowserView: View {
.disabled(backwardStack.count < 2)
Spacer()
Button {
- if let nextNode = forwardStack.popLast() {
- TelemetryManager.send(
- "applicationClickedForward",
- with: [
- "gopherURL":
- "\(nextNode.host):\(nextNode.port)\(nextNode.selector)"
- ])
- performGopherRequest(
- host: nextNode.host, port: nextNode.port,
- selector: nextNode.selector,
- clearForward: false)
- }
+ goForward()
} label: {
Label("Forward", systemImage: "chevron.right")
.labelStyle(.iconOnly)
@@ -359,21 +337,7 @@ struct BrowserView: View {
#endif
Button {
- if let curNode = backwardStack.popLast() {
- forwardStack.append(curNode)
- if let prevNode = backwardStack.popLast() {
- TelemetryManager.send(
- "applicationClickedBack",
- with: [
- "gopherURL":
- "\(prevNode.host):\(prevNode.port)\(prevNode.selector)"
- ])
- performGopherRequest(
- host: prevNode.host, port: prevNode.port,
- selector: prevNode.selector,
- clearForward: false)
- }
- }
+ goBack()
} label: {
Label("Back", systemImage: "chevron.left")
.labelStyle(.iconOnly)
@@ -381,19 +345,8 @@ struct BrowserView: View {
.disabled(backwardStack.count < 2)
Button {
- if let nextNode = forwardStack.popLast() {
- TelemetryManager.send(
- "applicationClickedForward",
- with: [
- "gopherURL":
- "\(nextNode.host):\(nextNode.port)\(nextNode.selector)"
- ])
- performGopherRequest(
- host: nextNode.host, port: nextNode.port,
- selector: nextNode.selector,
- clearForward: false)
- }
- } label: {
+ goForward();
+ } label: {
Label("Forward", systemImage: "chevron.right")
.labelStyle(.iconOnly)
}
@@ -462,6 +415,42 @@ struct BrowserView: View {
}
.accentColor(accentColour)
}
+
+ private func goBack() {
+ if let curNode = backwardStack.popLast() {
+ forwardStack.append(curNode)
+ if let prevNode = backwardStack.popLast() {
+ TelemetryManager.send(
+ "applicationClickedBack",
+ with: [
+ "gopherURL":
+ "\(prevNode.host):\(prevNode.port)\(prevNode.selector)"
+ ])
+ performGopherRequest(
+ host: prevNode.host, port: prevNode.port,
+ selector: prevNode.selector,
+ clearForward: false)
+ }
+ }
+ }
+
+ private func goForward() {
+ if let curNode = backwardStack.popLast() {
+ forwardStack.append(curNode)
+ if let prevNode = backwardStack.popLast() {
+ TelemetryManager.send(
+ "applicationClickedBack",
+ with: [
+ "gopherURL":
+ "\(prevNode.host):\(prevNode.port)\(prevNode.selector)"
+ ])
+ performGopherRequest(
+ host: prevNode.host, port: prevNode.port,
+ selector: prevNode.selector,
+ clearForward: false)
+ }
+ }
+ }
private func performGopherRequest(
host: String = "", port: Int = -1, selector: String = "", clearForward: Bool = true
@@ -546,7 +535,7 @@ struct BrowserView: View {
}
}
}
-
+
private func convertToHostNodes(_ responseItems: [gopherItem]) -> [GopherNode] {
var returnItems: [GopherNode] = []
responseItems.forEach { item in