diff --git a/frontend/device/generic/device.lua b/frontend/device/generic/device.lua index 6a2aadc99..fc02b7765 100644 --- a/frontend/device/generic/device.lua +++ b/frontend/device/generic/device.lua @@ -154,7 +154,7 @@ function Device:onPowerEvent(ev) local UIManager = require("ui/uimanager") UIManager:unschedule(self.suspend) local network_manager = require("ui/network/manager") - if network_manager.wifi_was_on and G_reader_settings:nilOrTrue("auto_restore_wifi") then + if network_manager.wifi_was_on and G_reader_settings:isTrue("auto_restore_wifi") then network_manager:restoreWifiAsync() end self:resume() diff --git a/frontend/ui/network/manager.lua b/frontend/ui/network/manager.lua index 4e7e0c43e..8286c0c80 100644 --- a/frontend/ui/network/manager.lua +++ b/frontend/ui/network/manager.lua @@ -5,6 +5,7 @@ local InfoMessage = require("ui/widget/infomessage") local LuaSettings = require("luasettings") local UIManager = require("ui/uimanager") local ffiutil = require("ffi/util") +local logger = require("logger") local _ = require("gettext") local T = ffiutil.template @@ -15,8 +16,15 @@ function NetworkMgr:readNWSettings() end function NetworkMgr:init() + -- On Kobo, kill WiFi if NetworkMgr:isWifiOn() and NOT NetworkMgr:isConnected() + -- (i.e., if the launcher left the WiFi in an inconsistent state: modules loaded, but no route to gateway). + if Device:isKobo() and self:isWifiOn() and not self:isConnected() then + logger.info("Kobo WiFi: Left in an inconsistent state by launcher!") + self:turnOffWifi() + end + self.wifi_was_on = G_reader_settings:isTrue("wifi_was_on") - if self.wifi_was_on and G_reader_settings:nilOrTrue("auto_restore_wifi") then + if self.wifi_was_on and G_reader_settings:isTrue("auto_restore_wifi") then self:restoreWifiAsync() end end @@ -186,9 +194,9 @@ end function NetworkMgr:getRestoreMenuTable() return { text = _("Automatically restore Wi-Fi connection after resume"), - checked_func = function() return G_reader_settings:nilOrTrue("auto_restore_wifi") end, + checked_func = function() return G_reader_settings:isTrue("auto_restore_wifi") end, enabled_func = function() return Device:isKobo() or Device:isCervantes() end, - callback = function() G_reader_settings:flipNilOrTrue("auto_restore_wifi") end, + callback = function() G_reader_settings:flipNilOrFalse("auto_restore_wifi") end, } end diff --git a/spec/unit/network_manager_spec.lua b/spec/unit/network_manager_spec.lua index 94f88e96d..0c1550673 100644 --- a/spec/unit/network_manager_spec.lua +++ b/spec/unit/network_manager_spec.lua @@ -6,6 +6,7 @@ describe("network_manager module", function() local release_ip_called local function clearState() + G_reader_settings:saveSetting("auto_restore_wifi", true) turn_on_wifi_called = 0 turn_off_wifi_called = 0 obtain_ip_called = 0