Adds shortcut action to stop LocalDevVPN Version 1.1.2

This commit is contained in:
se2crid
2025-12-10 01:30:57 +01:00
parent c7aff1e702
commit a8a5c04b8c
2 changed files with 28 additions and 4 deletions

View File

@@ -432,7 +432,7 @@
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
); );
MARKETING_VERSION = 1.1.1; MARKETING_VERSION = 1.1.2;
PRODUCT_BUNDLE_IDENTIFIER = com.jkcoxson.LocalDevVPN; PRODUCT_BUNDLE_IDENTIFIER = com.jkcoxson.LocalDevVPN;
PROVISIONING_PROFILE_SPECIFIER = ""; PROVISIONING_PROFILE_SPECIFIER = "";
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
@@ -469,7 +469,7 @@
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
); );
MARKETING_VERSION = 1.1.1; MARKETING_VERSION = 1.1.2;
PRODUCT_BUNDLE_IDENTIFIER = com.jkcoxson.LocalDevVPN; PRODUCT_BUNDLE_IDENTIFIER = com.jkcoxson.LocalDevVPN;
PROVISIONING_PROFILE_SPECIFIER = ""; PROVISIONING_PROFILE_SPECIFIER = "";
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
@@ -493,7 +493,7 @@
"@executable_path/Frameworks", "@executable_path/Frameworks",
"@executable_path/../../Frameworks", "@executable_path/../../Frameworks",
); );
MARKETING_VERSION = 1.1.0; MARKETING_VERSION = 1.1.2;
PRODUCT_BUNDLE_IDENTIFIER = "$(TUNNEL_BUNDLE_IDENTIFIER)"; PRODUCT_BUNDLE_IDENTIFIER = "$(TUNNEL_BUNDLE_IDENTIFIER)";
"PRODUCT_BUNDLE_IDENTIFIER[sdk=appletvos*]" = com.jkcoxson.LocalDevVPN.TunnelProv; "PRODUCT_BUNDLE_IDENTIFIER[sdk=appletvos*]" = com.jkcoxson.LocalDevVPN.TunnelProv;
"PRODUCT_BUNDLE_IDENTIFIER[sdk=iphoneos*]" = com.jkcoxson.LocalDevVPN.TunnelProv; "PRODUCT_BUNDLE_IDENTIFIER[sdk=iphoneos*]" = com.jkcoxson.LocalDevVPN.TunnelProv;
@@ -519,7 +519,7 @@
"@executable_path/Frameworks", "@executable_path/Frameworks",
"@executable_path/../../Frameworks", "@executable_path/../../Frameworks",
); );
MARKETING_VERSION = 1.1.0; MARKETING_VERSION = 1.1.2;
PRODUCT_BUNDLE_IDENTIFIER = "$(TUNNEL_BUNDLE_IDENTIFIER)"; PRODUCT_BUNDLE_IDENTIFIER = "$(TUNNEL_BUNDLE_IDENTIFIER)";
"PRODUCT_BUNDLE_IDENTIFIER[sdk=appletvos*]" = com.jkcoxson.LocalDevVPN.TunnelProv; "PRODUCT_BUNDLE_IDENTIFIER[sdk=appletvos*]" = com.jkcoxson.LocalDevVPN.TunnelProv;
"PRODUCT_BUNDLE_IDENTIFIER[sdk=iphoneos*]" = com.jkcoxson.LocalDevVPN.TunnelProv; "PRODUCT_BUNDLE_IDENTIFIER[sdk=iphoneos*]" = com.jkcoxson.LocalDevVPN.TunnelProv;

View File

@@ -25,6 +25,20 @@ struct StartLocalDevVPNIntent: AppIntent {
} }
} }
@available(iOS 16.0, *)
struct StopLocalDevVPNIntent: AppIntent {
static var title: LocalizedStringResource = "Stop LocalDevVPN"
static var description = IntentDescription("Disconnects LocalDevVPN without launching the app.")
static var openAppWhenRun = false
@MainActor
func perform() async throws -> some IntentResult {
TunnelManager.shared.stopVPN()
return .result()
}
}
@available(iOS 16.0, *) @available(iOS 16.0, *)
struct LocalDevVPNActions: AppShortcutsProvider { struct LocalDevVPNActions: AppShortcutsProvider {
static var appShortcuts: [AppShortcut] { static var appShortcuts: [AppShortcut] {
@@ -38,6 +52,16 @@ struct LocalDevVPNActions: AppShortcutsProvider {
shortTitle: "Start VPN", shortTitle: "Start VPN",
systemImageName: "lock.shield" systemImageName: "lock.shield"
) )
AppShortcut(
intent: StopLocalDevVPNIntent(),
phrases: [
"Stop \(.applicationName)",
"Disconnect \(.applicationName)",
"Disable \(.applicationName)"
],
shortTitle: "Stop VPN",
systemImageName: "lock.shield.slash"
)
} }
} }
#endif #endif