[feat] Add NetworkManager:isConnected() (#3593)

This enables connecting to calibre and FTP without Internet connectivity.
pull/3482/head^2
Frans de Jonge 6 years ago committed by GitHub
parent 65f26cecbb
commit 21274f5e92
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -102,13 +102,17 @@ end
function CloudStorage:openCloudServer(url)
local tbl
local NetworkMgr = require("ui/network/manager")
if not NetworkMgr:isOnline() then
NetworkMgr:promptWifiOn()
return
end
if self.type == "dropbox" then
if not NetworkMgr:isOnline() then
NetworkMgr:promptWifiOn()
return
end
tbl = DropBox:run(url, self.password)
elseif self.type == "ftp" then
if not NetworkMgr:isConnected() then
NetworkMgr:promptWifiOn()
return
end
tbl = Ftp:run(self.address, self.username, self.password, url)
end
if tbl and #tbl > 0 then

@ -60,6 +60,15 @@ function NetworkMgr:promptWifiOff(complete_callback)
})
end
function NetworkMgr:isConnected()
if Device:isAndroid() then
return self:isWifiOn()
else
-- `-c1` try only once; `-w2` wait 2 seconds
return os.execute([[ping -c1 -w2 $(/sbin/route -n | awk '$4 == "UG" {print $2}')]])
end
end
function NetworkMgr:isOnline()
local socket = require("socket")
-- Microsoft uses `dns.msftncsi.com` for Windows, see

@ -144,7 +144,7 @@ function CalibreCompanion:connect()
else
self:setInboxDir(host, port)
end
elseif not NetworkMgr:isOnline() then
elseif not NetworkMgr:isConnected() then
NetworkMgr:promptWifiOn()
else
DEBUG("cannot connect to calibre server")

Loading…
Cancel
Save