From 7ba9879c8c120706b60fe85828c6dc872e588c7e Mon Sep 17 00:00:00 2001 From: Davide De Rosa Date: Sat, 25 Jun 2022 13:41:45 +0200 Subject: [PATCH] Revisit constants structure Move some stuff back to App: - Constants, and split library-dependent - InApp entities and constants Flatten global constants hierarchy. --- Passepartout.xcodeproj/project.pbxproj | 25 ++++---- .../Constants/Constants+App.swift | 33 ---------- .../App/Constants/Constants+Library.swift | 63 +++++++++++++++++++ .../InApp/BuildProducts.swift | 0 .../InApp/LocalProduct.swift | 0 .../InApp/ProductManager.swift | 0 .../{Shared/Constants => }/Constants.swift | 0 7 files changed, 74 insertions(+), 47 deletions(-) rename Passepartout/{AppShared => App}/Constants/Constants+App.swift (83%) create mode 100644 Passepartout/App/Constants/Constants+Library.swift rename Passepartout/{AppShared => App}/InApp/BuildProducts.swift (100%) rename Passepartout/{AppShared => App}/InApp/LocalProduct.swift (100%) rename Passepartout/{AppShared => App}/InApp/ProductManager.swift (100%) rename Passepartout/{Shared/Constants => }/Constants.swift (100%) diff --git a/Passepartout.xcodeproj/project.pbxproj b/Passepartout.xcodeproj/project.pbxproj index 73df62b4..88a266ec 100644 --- a/Passepartout.xcodeproj/project.pbxproj +++ b/Passepartout.xcodeproj/project.pbxproj @@ -112,6 +112,7 @@ 0ED30DDB27EA351C0057D8A3 /* Constants+Tunnel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0ED30DDA27EA351C0057D8A3 /* Constants+Tunnel.swift */; }; 0ED30DDD27EA35230057D8A3 /* Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EB17EA127D2263700D473B5 /* Constants.swift */; }; 0ED31C3A20CF39510027975F /* NetworkExtension.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0ED31C3920CF39510027975F /* NetworkExtension.framework */; }; + 0ED7D62F2867328A009F2F8F /* Constants+Library.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0ED7D62E2867328A009F2F8F /* Constants+Library.swift */; }; 0ED89C1527DE0A0C008B36D6 /* Shortcut.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0ED89C1427DE0A0C008B36D6 /* Shortcut.swift */; }; 0ED89C1727DE0E05008B36D6 /* IntentEditView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0ED89C1627DE0E05008B36D6 /* IntentEditView.swift */; }; 0ED89C1C27DE3ABC008B36D6 /* ShortcutsView+Add.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0ED89C1B27DE3ABC008B36D6 /* ShortcutsView+Add.swift */; }; @@ -323,6 +324,7 @@ 0ED30DDA27EA351C0057D8A3 /* Constants+Tunnel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Constants+Tunnel.swift"; sourceTree = ""; }; 0ED31C3920CF39510027975F /* NetworkExtension.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = NetworkExtension.framework; path = System/Library/Frameworks/NetworkExtension.framework; sourceTree = SDKROOT; }; 0ED31C3B20CF39510027975F /* Tunnel.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Tunnel.entitlements; sourceTree = ""; }; + 0ED7D62E2867328A009F2F8F /* Constants+Library.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = "Constants+Library.swift"; path = "Passepartout/App/Constants/Constants+Library.swift"; sourceTree = SOURCE_ROOT; }; 0ED89C1427DE0A0C008B36D6 /* Shortcut.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Shortcut.swift; sourceTree = ""; }; 0ED89C1627DE0E05008B36D6 /* IntentEditView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IntentEditView.swift; sourceTree = ""; }; 0ED89C1B27DE3ABC008B36D6 /* ShortcutsView+Add.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ShortcutsView+Add.swift"; sourceTree = ""; }; @@ -375,14 +377,6 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 0E293858285A7484002A6E0E /* Constants */ = { - isa = PBXGroup; - children = ( - 0EB17EA127D2263700D473B5 /* Constants.swift */, - ); - path = Constants; - sourceTree = ""; - }; 0E293859285A7489002A6E0E /* Context */ = { isa = PBXGroup; children = ( @@ -547,8 +541,9 @@ children = ( 0E9AA983259F76C5003FAFF1 /* App */, 0ECB78D1285F4F4000B0E460 /* AppShared */, - 0ED30DD627EA33220057D8A3 /* Shared */, + 0E41BD98286711C3006346B4 /* Launcher */, 0EDE8DC020C86910004C739C /* Tunnel */, + 0EB17EA127D2263700D473B5 /* Constants.swift */, ); path = Passepartout; sourceTree = ""; @@ -559,6 +554,7 @@ 0ECB78D4285F505D00B0E460 /* Constants */, 0E29385A285A749E002A6E0E /* Context */, 0E49F6C927DB398100385834 /* Extensions */, + 0E92781227E7CD530057BB81 /* InApp */, 0EA591112733DD4E0096F796 /* Intents */, 0E2C171C27CB6307007E8488 /* Reusable */, 0E35C0AE280EF8A80071FA35 /* Views */, @@ -591,7 +587,6 @@ children = ( 0ECB78D3285F4F9600B0E460 /* Constants */, 0E293859285A7489002A6E0E /* Context */, - 0E92781227E7CD530057BB81 /* InApp */, 0E34A2B827CAA8EA00C73B67 /* L10n */, 0E9E5AE227B44CF1008C95DA /* Localizable.strings */, ); @@ -601,7 +596,6 @@ 0ECB78D3285F4F9600B0E460 /* Constants */ = { isa = PBXGroup; children = ( - 0EB17EA527D2263700D473B5 /* Constants+App.swift */, 0EBC075F27EC587900208AD9 /* SwiftGen+Strings.swift */, ); path = Constants; @@ -610,6 +604,8 @@ 0ECB78D4285F505D00B0E460 /* Constants */ = { isa = PBXGroup; children = ( + 0EB17EA527D2263700D473B5 /* Constants+App.swift */, + 0ED7D62E2867328A009F2F8F /* Constants+Library.swift */, 0E6059CE27FCC618003F4063 /* SwiftGen+Assets.swift */, 0EB34BCB27C6F41D00B126DA /* Theme.swift */, ); @@ -633,12 +629,12 @@ path = WireGuard; sourceTree = ""; }; - 0ED30DD627EA33220057D8A3 /* Shared */ = { + 0ED7D630286733A1009F2F8F /* Constants */ = { isa = PBXGroup; children = ( - 0E293858285A7484002A6E0E /* Constants */, + 0ED7D631286733AF009F2F8F /* Constants+Launcher.swift */, ); - path = Shared; + path = Constants; sourceTree = ""; }; 0EDE8DC020C86910004C739C /* Tunnel */ = { @@ -960,6 +956,7 @@ 0E70589B28377DC40075D1D2 /* VPNStatusText.swift in Sources */, 0E71ACE927C1055300F85C4B /* NetworkSettingsView.swift in Sources */, 0EB34BCA27C6A70200B126DA /* OnDemandView.swift in Sources */, + 0ED7D62F2867328A009F2F8F /* Constants+Library.swift in Sources */, 0E0BD27327B2EA2C00583AC5 /* MainView.swift in Sources */, 0EB17EBA27D2560300D473B5 /* PassepartoutProviders+Extensions.swift in Sources */, 0E3B7FDA27E51A0200C66F13 /* ProfileView+Provider.swift in Sources */, diff --git a/Passepartout/AppShared/Constants/Constants+App.swift b/Passepartout/App/Constants/Constants+App.swift similarity index 83% rename from Passepartout/AppShared/Constants/Constants+App.swift rename to Passepartout/App/Constants/Constants+App.swift index 83d49963..f766e845 100644 --- a/Passepartout/AppShared/Constants/Constants+App.swift +++ b/Passepartout/App/Constants/Constants+App.swift @@ -25,7 +25,6 @@ import Foundation import UniformTypeIdentifiers -import PassepartoutLibrary import SwiftyBeaver extension Constants { @@ -38,19 +37,6 @@ extension Constants { static let appGroupId = bundleConfig?["group_id"] as? String ?? "DUMMY_group_id" - static func tunnelBundleId(_ vpnProtocol: VPNProtocolType) -> String { - guard let identifier = Bundle.main.infoDictionary?[kCFBundleIdentifierKey as String] as? String else { - fatalError("Missing kCFBundleIdentifierKey from Info.plist") - } - switch vpnProtocol { - case .openVPN: - return "\(identifier).OpenVPNTunnel" - - case .wireGuard: - return "\(identifier).WireGuardTunnel" - } - } - static let isBeta: Bool = { Bundle.main.isTestFlight }() @@ -203,25 +189,6 @@ extension Constants { static let twitchFallback = URL(string: "https://twitch.tv/keeshux")! static let githubSponsors = URL(string: "https://www.github.com/sponsors/passepartoutvpn")! - - static let openVPNGuidances: [ProviderName: String] = [ - .protonvpn: "https://account.protonvpn.com/settings", - .surfshark: "https://my.surfshark.com/vpn/manual-setup/main", - .torguard: "https://torguard.net/clientarea.php?action=changepw", - .windscribe: "https://windscribe.com/getconfig/openvpn" - ] - - static let referrals: [ProviderName: String] = [ - .hideme: "https://member.hide.me/en/checkout?plan=new_default_prices&coupon=6CB-BDB-802&duration=24", - .mullvad: "https://mullvad.net/en/account/create/", - .nordvpn: "https://go.nordvpn.net/SH21Z", - .pia: "https://www.privateinternetaccess.com/pages/buy-vpn/", - .protonvpn: "https://proton.go2cloud.org/SHZ", - .torguard: "https://torguard.net/", - .tunnelbear: "https://www.tunnelbear.com/", - .vyprvpn: "https://www.vyprvpn.com/", - .windscribe: "https://secure.link/kCsD0prd" - ] } enum Repos { diff --git a/Passepartout/App/Constants/Constants+Library.swift b/Passepartout/App/Constants/Constants+Library.swift new file mode 100644 index 00000000..03d99b40 --- /dev/null +++ b/Passepartout/App/Constants/Constants+Library.swift @@ -0,0 +1,63 @@ +// +// Constants+Library.swift +// Passepartout +// +// Created by Davide De Rosa on 6/25/22. +// Copyright (c) 2022 Davide De Rosa. All rights reserved. +// +// https://github.com/passepartoutvpn +// +// This file is part of Passepartout. +// +// Passepartout is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// Passepartout is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with Passepartout. If not, see . +// + +import Foundation +import PassepartoutCore + +extension Constants.App { + static func tunnelBundleId(_ vpnProtocol: VPNProtocolType) -> String { + guard let identifier = Bundle.main.infoDictionary?[kCFBundleIdentifierKey as String] as? String else { + fatalError("Missing kCFBundleIdentifierKey from Info.plist") + } + switch vpnProtocol { + case .openVPN: + return "\(identifier).OpenVPNTunnel" + + case .wireGuard: + return "\(identifier).WireGuardTunnel" + } + } +} + +extension Constants.URLs { + static let openVPNGuidances: [ProviderName: String] = [ + .protonvpn: "https://account.protonvpn.com/settings", + .surfshark: "https://my.surfshark.com/vpn/manual-setup/main", + .torguard: "https://torguard.net/clientarea.php?action=changepw", + .windscribe: "https://windscribe.com/getconfig/openvpn" + ] + + static let referrals: [ProviderName: String] = [ + .hideme: "https://member.hide.me/en/checkout?plan=new_default_prices&coupon=6CB-BDB-802&duration=24", + .mullvad: "https://mullvad.net/en/account/create/", + .nordvpn: "https://go.nordvpn.net/SH21Z", + .pia: "https://www.privateinternetaccess.com/pages/buy-vpn/", + .protonvpn: "https://proton.go2cloud.org/SHZ", + .torguard: "https://torguard.net/", + .tunnelbear: "https://www.tunnelbear.com/", + .vyprvpn: "https://www.vyprvpn.com/", + .windscribe: "https://secure.link/kCsD0prd" + ] +} diff --git a/Passepartout/AppShared/InApp/BuildProducts.swift b/Passepartout/App/InApp/BuildProducts.swift similarity index 100% rename from Passepartout/AppShared/InApp/BuildProducts.swift rename to Passepartout/App/InApp/BuildProducts.swift diff --git a/Passepartout/AppShared/InApp/LocalProduct.swift b/Passepartout/App/InApp/LocalProduct.swift similarity index 100% rename from Passepartout/AppShared/InApp/LocalProduct.swift rename to Passepartout/App/InApp/LocalProduct.swift diff --git a/Passepartout/AppShared/InApp/ProductManager.swift b/Passepartout/App/InApp/ProductManager.swift similarity index 100% rename from Passepartout/AppShared/InApp/ProductManager.swift rename to Passepartout/App/InApp/ProductManager.swift diff --git a/Passepartout/Shared/Constants/Constants.swift b/Passepartout/Constants.swift similarity index 100% rename from Passepartout/Shared/Constants/Constants.swift rename to Passepartout/Constants.swift