diff --git a/Gemini-iOS/BrowserWebViewController.swift b/Gemini-iOS/BrowserWebViewController.swift index ae120aa..979d26a 100644 --- a/Gemini-iOS/BrowserWebViewController.swift +++ b/Gemini-iOS/BrowserWebViewController.swift @@ -189,6 +189,10 @@ class BrowserWebViewController: UIViewController { } else { self.renderFallback(response: response) } + } else if response.status.isInput { + DispatchQueue.main.async { + self.showInputPrompt(response: response) + } } else { DispatchQueue.main.async { self.showError(message: "Unknown error: \(response.header)") @@ -208,6 +212,20 @@ class BrowserWebViewController: UIViewController { errorMessageLabel.text = message } + private func showInputPrompt(response: GeminiResponse) { + let alert = UIAlertController(title: "Input Requested", message: response.meta, preferredStyle: .alert) + alert.addTextField { field in + field.isSecureTextEntry = response.status == .sensitiveInput + } + alert.addAction(UIAlertAction(title: "Submit", style: .default, handler: { _ in + guard var components = URLComponents(url: self.navigator.currentURL, resolvingAgainstBaseURL: false) else { return } + components.query = alert.textFields!.first!.text + self.navigator.changeURL(components.url!) + })) + alert.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: nil)) + present(alert, animated: true) + } + private func renderDocument(_ doc: Document) { self.document = doc