From 40781fa85a1c0b505a19226594da2227b20b6bc0 Mon Sep 17 00:00:00 2001 From: Stossy11 <69031796+stossy11@users.noreply.github.com> Date: Tue, 1 Apr 2025 08:34:19 +1100 Subject: [PATCH] add Setup --- .DS_Store | Bin 6148 -> 6148 bytes .../UserInterfaceState.xcuserstate | Bin 41416 -> 42434 bytes .../xcdebugger/Breakpoints_v2.xcbkptlist | 48 ++++++ StosVPN/ContentView.swift | 154 +++++++++++++++++- 4 files changed, 199 insertions(+), 3 deletions(-) diff --git a/.DS_Store b/.DS_Store index f91fe845c237f7337b8c5157724ddac371868f93..550f705a5aacdcf6151caa2c18b3e21108bd7580 100644 GIT binary patch delta 33 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 diff --git a/StosVPN.xcodeproj/xcuserdata/stossy11.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/StosVPN.xcodeproj/xcuserdata/stossy11.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist index a97bd34..0dede26 100644 --- a/StosVPN.xcodeproj/xcuserdata/stossy11.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +++ b/StosVPN.xcodeproj/xcuserdata/stossy11.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -3,4 +3,52 @@ uuid = "E9FBFA8B-D737-454C-9876-DFFB697E8C2D" type = "1" version = "2.0"> + + + + + + + + + + + + diff --git a/StosVPN/ContentView.swift b/StosVPN/ContentView.swift index c7768f5..9c12c69 100644 --- a/StosVPN/ContentView.swift +++ b/StosVPN/ContentView.swift @@ -297,6 +297,7 @@ struct ContentView: View { @State private var showSettings = false @State var tunnel = false @AppStorage("autoConnect") private var autoConnect = false + @AppStorage("hasNotCompletedSetup") private var hasNotCompletedSetup = true var body: some View { NavigationStack { @@ -335,10 +336,12 @@ struct ContentView: View { tunnelManager.startVPN() } } - .sheet(isPresented: $showSettings) { SettingsView() } + .sheet(isPresented: $hasNotCompletedSetup) { + SetupView() + } } } } @@ -607,8 +610,8 @@ struct SettingsView: View { .foregroundColor(.secondary) } - NavigationLink(destination: PrivacyPolicyView()) { - Text("Privacy Policy") + Button("Privacy Policy") { + UIApplication.shared.open(URL(string: "https://github.com/stossy11/PrivacyPolicy/blob/main/PrivacyPolicy.md")!) } NavigationLink(destination: HelpView()) { @@ -727,6 +730,151 @@ struct HelpView: View { } } +struct SetupView: View { + @Environment(\.dismiss) private var dismiss + @AppStorage("hasNotCompletedSetup") private var hasNotCompletedSetup = true + @State private var currentPage = 0 + + let pages = [ + SetupPage( + title: "Welcome to StosVPN", + description: "A simple local network tunnel for everyone", + imageName: "checkmark.shield.fill", + details: "StosVPN creates a local network interface on your device that anyone can use for development, testing, and accessing local servers." + ), + SetupPage( + title: "Why Use StosVPN?", + description: "Perfect for developers and everyday users", + imageName: "person.2.fill", + details: "• Access local web servers and development environments\n• Test applications that require specific network configurations\n• Connect to local network services without complex setup\n• Create isolated network environments for testing" + ), + SetupPage( + title: "Easy to Use", + description: "Just one tap to connect", + imageName: "hand.tap.fill", + details: "StosVPN is designed to be simple and straightforward. Just tap the connect button to establish a local network tunnel with pre-configured settings that work for most users." + ), + SetupPage( + title: "Privacy Focused", + description: "Your data stays on your device", + imageName: "lock.shield.fill", + details: "StosVPN creates a local tunnel that doesn't route traffic through external servers. All network traffic remains on your device, ensuring your privacy and security." + ) + ] + + var body: some View { + NavigationStack { + VStack { + TabView(selection: $currentPage) { + ForEach(0..