From ffea9e82ff991db0fe845a7eaa5980016565c96f Mon Sep 17 00:00:00 2001 From: Benjamin Erhart Date: Wed, 26 Jul 2023 13:49:00 +0200 Subject: [PATCH] Issue #62: Prepare Onion Browser advertisement. --- Orbot/Info.plist | 4 ++++ Orbot/MainViewController.swift | 19 +++++++++++++++++-- Shared/Helpers/URL+Helpers.swift | 4 ++++ Shared/ar.lproj/Localizable.strings | Bin 41214 -> 21857 bytes Shared/de.lproj/Localizable.strings | 6 ++++++ Shared/en.lproj/Localizable.strings | 6 ++++++ Shared/es.lproj/Localizable.strings | 6 ++++++ Shared/fr.lproj/Localizable.strings | 6 ++++++ Shared/ru.lproj/Localizable.strings | 6 ++++++ Shared/uk.lproj/Localizable.strings | 6 ++++++ 10 files changed, 61 insertions(+), 2 deletions(-) diff --git a/Orbot/Info.plist b/Orbot/Info.plist index 3bf5125..8fff5a2 100644 --- a/Orbot/Info.plist +++ b/Orbot/Info.plist @@ -33,6 +33,10 @@ $(CURRENT_PROJECT_VERSION) ITSAppUsesNonExemptEncryption + LSApplicationQueriesSchemes + + onionhttps + LSRequiresIPhoneOS NSAppTransportSecurity diff --git a/Orbot/MainViewController.swift b/Orbot/MainViewController.swift index d6c5f76..d0ce37d 100644 --- a/Orbot/MainViewController.swift +++ b/Orbot/MainViewController.swift @@ -94,6 +94,13 @@ class MainViewController: UIViewController { @IBOutlet weak var logTv: UITextView! + private static let obName = "Onion Browser" + + private var obInstalled: Bool { + UIApplication.shared.canOpenURL(URL.obCheckTor) + } + + override func viewDidLoad() { super.viewDidLoad() @@ -376,7 +383,6 @@ class MainViewController: UIViewController { self?.changeExit() })) - elements.append(UIAction( title: L10n.settings, image: UIImage(systemName: "gearshape"), @@ -385,6 +391,15 @@ class MainViewController: UIViewController { })) elements.last?.accessibilityIdentifier = "settings" +// elements.append(UIMenu(options: .displayInline, children: [UIAction( +// title: obInstalled +// ? String(format: NSLocalizedString("Open %@", comment: "Placeholder is 'Onion Browser'"), Self.obName) +// : String(format: NSLocalizedString("Install %@", comment: "Placeholder is 'Onion Browser'"), Self.obName), +// image: UIImage(systemName: "network.badge.shield.half.filled"), +// handler: { [weak self] _ in +// UIApplication.shared.open(self?.obInstalled ?? false ? URL.obCheckTor : URL.obAppStore) +// })])) + // elements.append(UIAction( // title: LocalizedString("About", comment: ""), // image: nil, @@ -395,7 +410,7 @@ class MainViewController: UIViewController { settingsBt?.menu = nil - settingsBt?.menu = UIMenu(title: "", children: elements) + settingsBt?.menu = UIMenu(children: elements) } diff --git a/Shared/Helpers/URL+Helpers.swift b/Shared/Helpers/URL+Helpers.swift index cb0ea4a..c07d969 100644 --- a/Shared/Helpers/URL+Helpers.swift +++ b/Shared/Helpers/URL+Helpers.swift @@ -18,6 +18,10 @@ extension URL { static var neverSsl = URL(string: "http://neverssl.com")! + static var obCheckTor = URL(string: "onionhttps://check.torproject.org/")! + + static var obAppStore = URL(string: "itms-apps://apple.com/app/id519296448")! + var contents: String? { guard self.isFileURL else { diff --git a/Shared/ar.lproj/Localizable.strings b/Shared/ar.lproj/Localizable.strings index 35273270cd3c1805ae889a18ed145360a407d7ef..155d81febfefe265c4dbbe7d67d7cab82ee86cb3 100644 GIT binary patch literal 21857 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 literal 41214 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 z