diff --git a/LocalDevVPN.xcodeproj/xcshareddata/xcschemes/TunnelProv.xcscheme b/LocalDevVPN.xcodeproj/xcshareddata/xcschemes/TunnelProv.xcscheme index 8d51541..7c566e4 100644 --- a/LocalDevVPN.xcodeproj/xcshareddata/xcschemes/TunnelProv.xcscheme +++ b/LocalDevVPN.xcodeproj/xcshareddata/xcschemes/TunnelProv.xcscheme @@ -74,6 +74,7 @@ savedToolIdentifier = "" useCustomWorkingDirectory = "NO" debugDocumentVersioning = "YES" + askForAppToLaunch = "Yes" launchAutomaticallySubstyle = "2"> diff --git a/LocalDevVPN/ContentView.swift b/LocalDevVPN/ContentView.swift index 34a41ba..8c131ac 100644 --- a/LocalDevVPN/ContentView.swift +++ b/LocalDevVPN/ContentView.swift @@ -17,7 +17,6 @@ extension Bundle { } // MARK: - Logging Utility - class VPNLogger: ObservableObject { @Published var logs: [String] = [] @@ -814,8 +813,14 @@ struct StatusOverviewCard: View { Spacer() HStack(spacing: 4) { - Text("connected_at") - Text(Date(), style: .time) + if TunnelManager.shared.tunnelStatus == .connected { + Text("connected_at") + Text(Date(), style: .time) + } + else { + Text("last_connected_at") + Text(Date(), style: .time) + } } .font(.caption) .foregroundColor(.secondary) @@ -1112,27 +1117,7 @@ struct SettingsView: View { networkConfigRow(label: "subnet_mask", text: $subnetMask) } } - - Section(header: Text("app_information")) { - Button { - UIApplication.shared.open(URL(string: "https://jkcoxson.com/cdn/LocalDevVPN/LocalDevVPNPrivacyPolicy.md")!, options: [:]) - } label: { - Label("privacy_policy", systemImage: "lock.shield") - } - NavigationLink(destination: DataCollectionInfoView()) { - Label("data_collection_policy", systemImage: "hand.raised.slash") - } - HStack { - Text("app_version") - Spacer() - Text(Bundle.main.shortVersion) - .foregroundColor(.secondary) - } - NavigationLink(destination: HelpView()) { - Text("help_and_support") - } - } - + Section(header: Text("language")) { Picker("dropdown_language", selection: $selectedLanguage) { Text("english").tag("en") @@ -1158,6 +1143,26 @@ struct SettingsView: View { ) } } + + Section(header: Text("app_information")) { + Button { + UIApplication.shared.open(URL(string: "https://jkcoxson.com/cdn/LocalDevVPN/LocalDevVPNPrivacyPolicy.md")!, options: [:]) + } label: { + Label("privacy_policy", systemImage: "lock.shield") + } + NavigationLink(destination: DataCollectionInfoView()) { + Label("data_collection_policy", systemImage: "hand.raised.slash") + } + HStack { + Text("app_version") + Spacer() + Text(Bundle.main.shortVersion) + .foregroundColor(.secondary) + } + NavigationLink(destination: HelpView()) { + Text("help_and_support") + } + } } .alert(isPresented: $showNetworkWarning) { Alert( diff --git a/LocalDevVPN/Localization/en.lproj/Localizable.strings b/LocalDevVPN/Localization/en.lproj/Localizable.strings index b08c6c0..911bf74 100644 --- a/LocalDevVPN/Localization/en.lproj/Localizable.strings +++ b/LocalDevVPN/Localization/en.lproj/Localizable.strings @@ -12,7 +12,8 @@ "local_tunnel_inactive" = "Local Tunnel Inactive"; "connected_to_ip" = "Connected to %@"; -"connected_at" = "Connected at"; +"connected_at" = "Connected: "; +"last_connected_at" = "Last connection: "; "ios_might_ask_you_to_allow_the_vpn" = "iOS might ask you to allow the VPN"; "disconnecting_safely" = "Disconnecting safely…"; "open_settings_to_review_details" = "Open Settings to review details"; @@ -149,4 +150,4 @@ "restart_title" = "Restart"; "restart_message" = "To apply the changes, you need to restart the application."; "confirmYes" = "Yes"; -"confirmNo" = "No"; \ No newline at end of file +"confirmNo" = "No"; diff --git a/LocalDevVPN/Localization/es.lproj/Localizable.strings b/LocalDevVPN/Localization/es.lproj/Localizable.strings index 0bc2a62..dc56cf1 100644 --- a/LocalDevVPN/Localization/es.lproj/Localizable.strings +++ b/LocalDevVPN/Localization/es.lproj/Localizable.strings @@ -12,7 +12,8 @@ "local_tunnel_inactive" = "Túnel local inactivo"; "connected_to_ip" = "Conectado a %@"; -"connected_at" = "Conectado a"; +"connected_at" = "Conectado: "; +"last_connected_at" = "Última conexión:"; "ios_might_ask_you_to_allow_the_vpn" = "iOS podría pedirte que permitas la VPN"; "disconnecting_safely" = "Desconectando de forma segura…"; "open_settings_to_review_details" = "Abre Configuración para revisar los detalles"; @@ -149,4 +150,4 @@ "restart_title" = "Reiniciar"; "restart_message" = "Para aplicar los cambios, es necesario reiniciar la aplicación."; "confirmYes" = "Sí"; -"confirmNo" = "No"; \ No newline at end of file +"confirmNo" = "No"; diff --git a/LocalDevVPN/Localization/fr.lproj/Localizable.strings b/LocalDevVPN/Localization/fr.lproj/Localizable.strings index 5836c8b..bfcff5e 100644 --- a/LocalDevVPN/Localization/fr.lproj/Localizable.strings +++ b/LocalDevVPN/Localization/fr.lproj/Localizable.strings @@ -12,7 +12,8 @@ "local_tunnel_inactive" = "Tunnel local inactif"; "connected_to_ip" = "Connecté à %@"; -"connected_at" = "Connecté à"; +"connected_at" = "Connecté:"; +"last_connected_at" = "Dernière connexion:"; "ios_might_ask_you_to_allow_the_vpn" = "iOS peut vous demander d'autoriser le VPN"; "disconnecting_safely" = "Déconnexion sécurisée en cours…"; "open_settings_to_review_details" = "Ouvrir les paramètres pour voir les détails"; @@ -150,4 +151,4 @@ "restart_title" = "Redémarrer"; "restart_message" = "Pour appliquer les modifications, vous devez redémarrer l'application."; "confirmYes" = "Oui"; -"confirmNo" = "Non"; \ No newline at end of file +"confirmNo" = "Non"; diff --git a/LocalDevVPN/Localization/it.lproj/Localizable.strings b/LocalDevVPN/Localization/it.lproj/Localizable.strings index 01a8ebf..6e82be2 100644 --- a/LocalDevVPN/Localization/it.lproj/Localizable.strings +++ b/LocalDevVPN/Localization/it.lproj/Localizable.strings @@ -12,7 +12,8 @@ "local_tunnel_inactive" = "Tunnel locale inattivo"; "connected_to_ip" = "Connesso a %@"; -"connected_at" = "Connesso a"; +"connected_at" = "Connesso:"; +"last_connected_at" = "Ultima connessione:"; "ios_might_ask_you_to_allow_the_vpn" = "iOS potrebbe chiederti di consentire la VPN"; "disconnecting_safely" = "Disconnessione in modo sicuro…"; "open_settings_to_review_details" = "Apri Impostazioni per visualizzare i dettagli"; @@ -149,4 +150,4 @@ "restart_title" = "Riavvia"; "restart_message" = "Per applicare le modifiche, è necessario riavviare l'applicazione."; "confirmYes" = "Si"; -"confirmNo" = "No"; \ No newline at end of file +"confirmNo" = "No"; diff --git a/LocalDevVPN/Localization/ko.lproj/Localizable.strings b/LocalDevVPN/Localization/ko.lproj/Localizable.strings index be731a1..598ffba 100644 --- a/LocalDevVPN/Localization/ko.lproj/Localizable.strings +++ b/LocalDevVPN/Localization/ko.lproj/Localizable.strings @@ -12,7 +12,8 @@ "local_tunnel_inactive" = "로컬 터널 비활성화됨"; "connected_to_ip" = "%@에 연결됨"; -"connected_at" = "연결 시간 "; +"connected_at" = "연결됨:"; +"last_connected_at" = "마지막 접속:"; "ios_might_ask_you_to_allow_the_vpn" = "iOS에서 VPN 허용 요청이 나타날 수 있습니다"; "disconnecting_safely" = "안전하게 연결 해제 중…"; "open_settings_to_review_details" = "자세한 내용을 보려면 설정을 여세요"; @@ -150,4 +151,4 @@ "restart_title" = "재시작"; "restart_message" = "변경사항을 적용할려면 앱을 재시작해야 합니다."; "confirmYes" = "네"; -"confirmNo" = "아니요"; \ No newline at end of file +"confirmNo" = "아니요"; diff --git a/LocalDevVPN/Localization/pl.lproj/Localizable.strings b/LocalDevVPN/Localization/pl.lproj/Localizable.strings index f1b7f59..c04bb6b 100644 --- a/LocalDevVPN/Localization/pl.lproj/Localizable.strings +++ b/LocalDevVPN/Localization/pl.lproj/Localizable.strings @@ -12,7 +12,8 @@ "local_tunnel_inactive" = "Lokalny tunel nieaktywny"; "connected_to_ip" = "Połączono z %@"; -"connected_at" = "Połączono z "; +"connected_at" = "Powiązane:"; +"last_connected_at" = "Ostatnie połączenie:"; "ios_might_ask_you_to_allow_the_vpn" = "iOS może poprosić Cię o pozwolenie na VPN"; "disconnecting_safely" = "Bezpieczne rozłączanie…"; "open_settings_to_review_details" = "Otwórz Ustawienia, aby zobaczyć szczegóły"; @@ -150,4 +151,4 @@ "restart_title" = "Restartuj"; "restart_message" = "Aby zastosować zmiany, należy ponownie uruchomić aplikację."; "confirmYes" = "Tak"; -"confirmNo" = "Nie"; \ No newline at end of file +"confirmNo" = "Nie"; diff --git a/LocalDevVPN/Localization/zh-Hant.lproj/Localizable.strings b/LocalDevVPN/Localization/zh-Hant.lproj/Localizable.strings index 832dd82..a569c00 100644 --- a/LocalDevVPN/Localization/zh-Hant.lproj/Localizable.strings +++ b/LocalDevVPN/Localization/zh-Hant.lproj/Localizable.strings @@ -12,7 +12,8 @@ "local_tunnel_inactive" = "本地通道未啟動"; "connected_to_ip" = "已連接至 %@"; -"connected_at" = "連接於"; +"connected_at" = "相關:"; +"last_connected_at" = "最後一次連線:"; "ios_might_ask_you_to_allow_the_vpn" = "iOS可能會要求您允許VPN"; "disconnecting_safely" = "安全地中斷連線中…"; "open_settings_to_review_details" = "開啟設定以查看詳細資訊"; @@ -150,4 +151,4 @@ "restart_title" = "重新啟動"; "restart_message" = "要套用變更,必須重新啟動應用程式。"; "confirmYes" = "是"; -"confirmNo" = "不"; \ No newline at end of file +"confirmNo" = "不";