Add option to ignore device sleep
This commit is contained in:
@@ -28,6 +28,8 @@ public struct SettingView: View {
|
||||
@State private var includeAllNetworks = false
|
||||
#endif
|
||||
|
||||
@State private var ignoreDeviceSleep = false
|
||||
|
||||
@State private var version = ""
|
||||
@State private var dataSize = ""
|
||||
@State private var taiwanFlagAvailable = false
|
||||
@@ -94,6 +96,12 @@ public struct SettingView: View {
|
||||
}
|
||||
}
|
||||
#endif
|
||||
Toggle("Ignore Device Sleep", isOn: $ignoreDeviceSleep)
|
||||
.onChangeCompat(of: ignoreDeviceSleep) { newValue in
|
||||
Task {
|
||||
await SharedPreferences.ignoreDeviceSleep.set(newValue)
|
||||
}
|
||||
}
|
||||
#if os(macOS)
|
||||
if Variant.useSystemExtension {
|
||||
HStack {
|
||||
@@ -219,6 +227,7 @@ public struct SettingView: View {
|
||||
#if !os(tvOS)
|
||||
includeAllNetworks = await SharedPreferences.includeAllNetworks.get()
|
||||
#endif
|
||||
ignoreDeviceSleep = await SharedPreferences.ignoreDeviceSleep.get()
|
||||
if ApplicationLibrary.inPreview {
|
||||
version = "<redacted>"
|
||||
dataSize = LibboxFormatBytes(1000 * 1000 * 10)
|
||||
|
||||
@@ -17,6 +17,7 @@ public enum SharedPreferences {
|
||||
|
||||
public static let maxLogLines = Preference<Int>("max_log_lines", defaultValue: 300)
|
||||
public static let alwaysOn = Preference<Bool>("always_on", defaultValue: false)
|
||||
public static let ignoreDeviceSleep = Preference<Bool>("ignore_device_sleep", defaultValue: false)
|
||||
|
||||
#if os(macOS)
|
||||
public static let showMenuBarExtra = Preference<Bool>("show_menu_bar_extra", defaultValue: true)
|
||||
|
||||
@@ -6,6 +6,7 @@ open class ExtensionProvider: NEPacketTunnelProvider {
|
||||
public var username: String? = nil
|
||||
private var commandServer: LibboxCommandServer!
|
||||
private var boxService: LibboxBoxService!
|
||||
private var ignoreDeviceSleep = false
|
||||
private var systemProxyAvailable = false
|
||||
private var systemProxyEnabled = false
|
||||
private var platformInterface: ExtensionPlatformInterface!
|
||||
@@ -35,6 +36,7 @@ open class ExtensionProvider: NEPacketTunnelProvider {
|
||||
}
|
||||
|
||||
await LibboxSetMemoryLimit(!SharedPreferences.disableMemoryLimit.get())
|
||||
ignoreDeviceSleep = await SharedPreferences.ignoreDeviceSleep.get()
|
||||
|
||||
if platformInterface == nil {
|
||||
platformInterface = ExtensionPlatformInterface(self)
|
||||
@@ -159,12 +161,18 @@ open class ExtensionProvider: NEPacketTunnelProvider {
|
||||
}
|
||||
|
||||
override open func sleep() async {
|
||||
if ignoreDeviceSleep {
|
||||
return
|
||||
}
|
||||
if let boxService {
|
||||
boxService.sleep()
|
||||
}
|
||||
}
|
||||
|
||||
override open func wake() {
|
||||
if ignoreDeviceSleep {
|
||||
return
|
||||
}
|
||||
if let boxService {
|
||||
boxService.wake()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user