diff options
-rw-r--r-- | iGopherBrowser.xcodeproj/project.pbxproj | 8 | ||||
-rw-r--r-- | iGopherBrowser/BrowserView.swift | 105 |
2 files changed, 51 insertions, 62 deletions
diff --git a/iGopherBrowser.xcodeproj/project.pbxproj b/iGopherBrowser.xcodeproj/project.pbxproj index 7e95c18..b6e417c 100644 --- a/iGopherBrowser.xcodeproj/project.pbxproj +++ b/iGopherBrowser.xcodeproj/project.pbxproj @@ -404,7 +404,7 @@ CODE_SIGN_ENTITLEMENTS = iGopherBrowser/iGopherBrowser.entitlements; "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 10; + CURRENT_PROJECT_VERSION = 12; DEAD_CODE_STRIPPING = YES; DEVELOPMENT_ASSET_PATHS = "\"iGopherBrowser/Preview Content\""; DEVELOPMENT_TEAM = 6BS49F3GLW; @@ -427,7 +427,7 @@ LD_RUNPATH_SEARCH_PATHS = "@executable_path/Frameworks"; "LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = "@executable_path/../Frameworks"; MACOSX_DEPLOYMENT_TARGET = 14.0; - MARKETING_VERSION = 1.0.6; + MARKETING_VERSION = 1.0.7; PRODUCT_BUNDLE_IDENTIFIER = com.navanchauhan.iGopherBrowser; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = auto; @@ -448,7 +448,7 @@ CODE_SIGN_ENTITLEMENTS = iGopherBrowser/iGopherBrowser.entitlements; "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 10; + CURRENT_PROJECT_VERSION = 12; DEAD_CODE_STRIPPING = YES; DEVELOPMENT_ASSET_PATHS = "\"iGopherBrowser/Preview Content\""; DEVELOPMENT_TEAM = 6BS49F3GLW; @@ -471,7 +471,7 @@ LD_RUNPATH_SEARCH_PATHS = "@executable_path/Frameworks"; "LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = "@executable_path/../Frameworks"; MACOSX_DEPLOYMENT_TARGET = 14.0; - MARKETING_VERSION = 1.0.6; + MARKETING_VERSION = 1.0.7; PRODUCT_BUNDLE_IDENTIFIER = com.navanchauhan.iGopherBrowser; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = auto; 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 |