Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 35 additions & 7 deletions hardcover/lib/auto_wifi.lua
Original file line number Diff line number Diff line change
@@ -1,9 +1,31 @@
local SETTING = require("hardcover/lib/constants/settings")

local Device = require("device")
local logger = require("logger")

local NetworkMgr = require("ui/network/manager")
local socket = require("socket")
local UIManager = require("ui/uimanager")

local api_host = "api.hardcover.app"
local dns_attempts = 6

local function waitForDNS(host, attempts, callback)
local ip = socket.dns.toip(host)

if ip then
callback(true)
return
end

if attempts <= 0 then
callback(false)
return
end

UIManager:scheduleIn(1, function()
waitForDNS(host, attempts - 1, callback)
end)
end

local AutoWifi = {
connection_pending = false
Expand Down Expand Up @@ -35,12 +57,16 @@ function AutoWifi:withWifi(callback)
G_reader_settings:saveSetting("wifi_was_on", original_on)

self.connection_pending = false
--logger.warn("HARDCOVER wifi enabled")

callback(true)
-- Wait for Hardcover's DNS to become available before making API requests.
waitForDNS(api_host, dns_attempts, function(ready)
if ready then
callback(true)
end

-- TODO: schedule turn off wifi, debounce
self:wifiDisableSilent()
-- TODO: schedule turn off wifi, debounce
self:wifiDisableSilent()
end)
end)
end
end
Expand All @@ -67,7 +93,9 @@ function AutoWifi:wifiPrompt(callback)
return
end

local network_callback = callback and function() callback(true) end or nil
local network_callback = callback and function()
callback(true)
end or nil

if self.settings:readSetting(SETTING.ENABLE_WIFI) then
NetworkMgr:turnOnWifiAndWaitForConnection(network_callback)
Expand All @@ -84,4 +112,4 @@ function AutoWifi:wifiDisablePrompt()
end
end

return AutoWifi
return AutoWifi