Add option to ignore device sleep

This commit is contained in:
世界
2024-02-02 11:33:19 +08:00
parent 339e37f4be
commit 70d43abd52
3 changed files with 18 additions and 0 deletions
@@ -28,6 +28,8 @@ public struct SettingView: View {
@State private var includeAllNetworks = false @State private var includeAllNetworks = false
#endif #endif
@State private var ignoreDeviceSleep = false
@State private var version = "" @State private var version = ""
@State private var dataSize = "" @State private var dataSize = ""
@State private var taiwanFlagAvailable = false @State private var taiwanFlagAvailable = false
@@ -94,6 +96,12 @@ public struct SettingView: View {
} }
} }
#endif #endif
Toggle("Ignore Device Sleep", isOn: $ignoreDeviceSleep)
.onChangeCompat(of: ignoreDeviceSleep) { newValue in
Task {
await SharedPreferences.ignoreDeviceSleep.set(newValue)
}
}
#if os(macOS) #if os(macOS)
if Variant.useSystemExtension { if Variant.useSystemExtension {
HStack { HStack {
@@ -219,6 +227,7 @@ public struct SettingView: View {
#if !os(tvOS) #if !os(tvOS)
includeAllNetworks = await SharedPreferences.includeAllNetworks.get() includeAllNetworks = await SharedPreferences.includeAllNetworks.get()
#endif #endif
ignoreDeviceSleep = await SharedPreferences.ignoreDeviceSleep.get()
if ApplicationLibrary.inPreview { if ApplicationLibrary.inPreview {
version = "<redacted>" version = "<redacted>"
dataSize = LibboxFormatBytes(1000 * 1000 * 10) dataSize = LibboxFormatBytes(1000 * 1000 * 10)
+1
View File
@@ -17,6 +17,7 @@ public enum SharedPreferences {
public static let maxLogLines = Preference<Int>("max_log_lines", defaultValue: 300) public static let maxLogLines = Preference<Int>("max_log_lines", defaultValue: 300)
public static let alwaysOn = Preference<Bool>("always_on", defaultValue: false) public static let alwaysOn = Preference<Bool>("always_on", defaultValue: false)
public static let ignoreDeviceSleep = Preference<Bool>("ignore_device_sleep", defaultValue: false)
#if os(macOS) #if os(macOS)
public static let showMenuBarExtra = Preference<Bool>("show_menu_bar_extra", defaultValue: true) public static let showMenuBarExtra = Preference<Bool>("show_menu_bar_extra", defaultValue: true)
+8
View File
@@ -6,6 +6,7 @@ open class ExtensionProvider: NEPacketTunnelProvider {
public var username: String? = nil public var username: String? = nil
private var commandServer: LibboxCommandServer! private var commandServer: LibboxCommandServer!
private var boxService: LibboxBoxService! private var boxService: LibboxBoxService!
private var ignoreDeviceSleep = false
private var systemProxyAvailable = false private var systemProxyAvailable = false
private var systemProxyEnabled = false private var systemProxyEnabled = false
private var platformInterface: ExtensionPlatformInterface! private var platformInterface: ExtensionPlatformInterface!
@@ -35,6 +36,7 @@ open class ExtensionProvider: NEPacketTunnelProvider {
} }
await LibboxSetMemoryLimit(!SharedPreferences.disableMemoryLimit.get()) await LibboxSetMemoryLimit(!SharedPreferences.disableMemoryLimit.get())
ignoreDeviceSleep = await SharedPreferences.ignoreDeviceSleep.get()
if platformInterface == nil { if platformInterface == nil {
platformInterface = ExtensionPlatformInterface(self) platformInterface = ExtensionPlatformInterface(self)
@@ -159,12 +161,18 @@ open class ExtensionProvider: NEPacketTunnelProvider {
} }
override open func sleep() async { override open func sleep() async {
if ignoreDeviceSleep {
return
}
if let boxService { if let boxService {
boxService.sleep() boxService.sleep()
} }
} }
override open func wake() { override open func wake() {
if ignoreDeviceSleep {
return
}
if let boxService { if let boxService {
boxService.wake() boxService.wake()
} }