Add option to ignore device sleep
This commit is contained in:
@@ -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)
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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()
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user