59 lines
2.9 KiB
Lua
59 lines
2.9 KiB
Lua
local _ = require("gettext")
|
|
local WidgetContainer = require("ui/widget/container/widgetcontainer")
|
|
local UIManager = require("ui/uimanager")
|
|
local InfoMessage = require("ui/widget/infomessage")
|
|
local NetworkMgr = require("ui/network/manager")
|
|
local Settings = require("settings")
|
|
local Upload = require("upload")
|
|
local const = require("./const")
|
|
|
|
local kovi = WidgetContainer:extend({ name="kovi", is_doc_only=false })
|
|
function kovi:init() self.ui.menu:registerToMainMenu(self); self.settings=Settings:new() end
|
|
|
|
function kovi:showMessage(text) UIManager:show(InfoMessage:new({text=_(text),timeout=4})) end
|
|
function kovi:pair()
|
|
self.settings:showSetup(function(url,code)
|
|
NetworkMgr:runWhenOnline(function()
|
|
local ok,response=Upload.pair(url,code,self.settings)
|
|
if ok then self:showMessage("kovi paired successfully.") else self:showMessage("Pairing failed: "..tostring(response and response.error or "unknown error")) end
|
|
end)
|
|
end)
|
|
end
|
|
function kovi:sync(silent)
|
|
local url=self.settings:getServerURL(); local token=self.settings:getToken()
|
|
if url=="" or not token then if not silent then self:showMessage("Pair this reader with kovi first.") end; return end
|
|
NetworkMgr:runWhenOnline(function()
|
|
local ok,response=Upload.sync(url,token)
|
|
if not silent then
|
|
if ok then self:showMessage(response and response.message or "kovi sync complete.")
|
|
else self:showMessage("Sync failed: "..tostring(response and response.error or "server error")) end
|
|
end
|
|
end)
|
|
end
|
|
|
|
function kovi:testConnection()
|
|
local url=self.settings:getServerURL()
|
|
if url=="" then self:showMessage("Configure the kovi server URL first."); return end
|
|
NetworkMgr:runWhenOnline(function()
|
|
local ok,response=Upload.diagnose(url)
|
|
if ok then
|
|
self:showMessage("kovi connection OK"..(response and response.version and (" · v"..tostring(response.version)) or "."))
|
|
else
|
|
self:showMessage("Connection test failed: "..tostring(response and response.error or "unknown error"))
|
|
end
|
|
end)
|
|
end
|
|
|
|
function kovi:onSuspend() if self.settings:getSyncOnSuspend() then self:sync(true) end end
|
|
function kovi:onPowerOff() if self.settings:getSyncOnSuspend() then self:sync(true) end end
|
|
function kovi:addToMainMenu(menu_items)
|
|
menu_items.kovi={text=_("kovi"),sorting_hint="tools",sub_item_table={
|
|
{text=_("Sync now"),callback=function() self:sync(false) end,separator=true},
|
|
{text=_("Pair / change server"),callback=function() self:pair() end},
|
|
{text=_("Test server connection"),callback=function() self:testConnection() end},
|
|
{text=_("Sync on suspend"),checked_func=function() return self.settings:getSyncOnSuspend() end,callback=function() self.settings:toggleSyncOnSuspend() end},
|
|
{text=_("About kovi"),callback=function() self:showMessage("kovi secure sync plugin · v"..const.VERSION) end},
|
|
}}
|
|
end
|
|
return kovi
|