Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES"
askForAppToLaunch = "Yes"
launchAutomaticallySubstyle = "2">
<BuildableProductRunnable
runnableDebuggingMode = "0">
Expand Down
53 changes: 29 additions & 24 deletions LocalDevVPN/ContentView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ extension Bundle {
}

// MARK: - Logging Utility

class VPNLogger: ObservableObject {
@Published var logs: [String] = []

Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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")
Expand All @@ -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(
Expand Down
5 changes: 3 additions & 2 deletions LocalDevVPN/Localization/en.lproj/Localizable.strings
Original file line number Diff line number Diff line change
Expand Up @@ -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";
Expand Down Expand Up @@ -149,4 +150,4 @@
"restart_title" = "Restart";
"restart_message" = "To apply the changes, you need to restart the application.";
"confirmYes" = "Yes";
"confirmNo" = "No";
"confirmNo" = "No";
5 changes: 3 additions & 2 deletions LocalDevVPN/Localization/es.lproj/Localizable.strings
Original file line number Diff line number Diff line change
Expand Up @@ -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";
Expand Down Expand Up @@ -149,4 +150,4 @@
"restart_title" = "Reiniciar";
"restart_message" = "Para aplicar los cambios, es necesario reiniciar la aplicación.";
"confirmYes" = "Sí";
"confirmNo" = "No";
"confirmNo" = "No";
5 changes: 3 additions & 2 deletions LocalDevVPN/Localization/fr.lproj/Localizable.strings
Original file line number Diff line number Diff line change
Expand Up @@ -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";
Expand Down Expand Up @@ -150,4 +151,4 @@
"restart_title" = "Redémarrer";
"restart_message" = "Pour appliquer les modifications, vous devez redémarrer l'application.";
"confirmYes" = "Oui";
"confirmNo" = "Non";
"confirmNo" = "Non";
5 changes: 3 additions & 2 deletions LocalDevVPN/Localization/it.lproj/Localizable.strings
Original file line number Diff line number Diff line change
Expand Up @@ -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";
Expand Down Expand Up @@ -149,4 +150,4 @@
"restart_title" = "Riavvia";
"restart_message" = "Per applicare le modifiche, è necessario riavviare l'applicazione.";
"confirmYes" = "Si";
"confirmNo" = "No";
"confirmNo" = "No";
5 changes: 3 additions & 2 deletions LocalDevVPN/Localization/ko.lproj/Localizable.strings
Original file line number Diff line number Diff line change
Expand Up @@ -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" = "자세한 내용을 보려면 설정을 여세요";
Expand Down Expand Up @@ -150,4 +151,4 @@
"restart_title" = "재시작";
"restart_message" = "변경사항을 적용할려면 앱을 재시작해야 합니다.";
"confirmYes" = "네";
"confirmNo" = "아니요";
"confirmNo" = "아니요";
5 changes: 3 additions & 2 deletions LocalDevVPN/Localization/pl.lproj/Localizable.strings
Original file line number Diff line number Diff line change
Expand Up @@ -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";
Expand Down Expand Up @@ -150,4 +151,4 @@
"restart_title" = "Restartuj";
"restart_message" = "Aby zastosować zmiany, należy ponownie uruchomić aplikację.";
"confirmYes" = "Tak";
"confirmNo" = "Nie";
"confirmNo" = "Nie";
5 changes: 3 additions & 2 deletions LocalDevVPN/Localization/zh-Hant.lproj/Localizable.strings
Original file line number Diff line number Diff line change
Expand Up @@ -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" = "開啟設定以查看詳細資訊";
Expand Down Expand Up @@ -150,4 +151,4 @@
"restart_title" = "重新啟動";
"restart_message" = "要套用變更,必須重新啟動應用程式。";
"confirmYes" = "是";
"confirmNo" = "不";
"confirmNo" = "不";