forked from akai/readest
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
local Device = require("device")
|
local Device = require("device")
|
||||||
local Event = require("ui/event")
|
local Event = require("ui/event")
|
||||||
|
local Dispatcher = require("dispatcher")
|
||||||
local InfoMessage = require("ui/widget/infomessage")
|
local InfoMessage = require("ui/widget/infomessage")
|
||||||
local WidgetContainer = require("ui/widget/container/widgetcontainer")
|
local WidgetContainer = require("ui/widget/container/widgetcontainer")
|
||||||
local MultiInputDialog = require("ui/widget/multiinputdialog")
|
local MultiInputDialog = require("ui/widget/multiinputdialog")
|
||||||
@@ -40,35 +41,25 @@ function ReadestSync:init()
|
|||||||
self.last_sync_timestamp = 0
|
self.last_sync_timestamp = 0
|
||||||
self.settings = G_reader_settings:readSetting("readest_sync", self.default_settings)
|
self.settings = G_reader_settings:readSetting("readest_sync", self.default_settings)
|
||||||
|
|
||||||
self:onDispatcherRegisterActions()
|
|
||||||
self.ui.menu:registerToMainMenu(self)
|
self.ui.menu:registerToMainMenu(self)
|
||||||
end
|
end
|
||||||
|
|
||||||
function ReadestSync:onDispatcherRegisterActions()
|
function ReadestSync:onDispatcherRegisterActions()
|
||||||
--
|
Dispatcher:registerAction("readest_sync_set_autosync",
|
||||||
|
{ category="string", event="ReadestSyncToggleAutoSync", title=_("Set auto progress sync"), reader=true,
|
||||||
|
args={true, false}, toggle={_("on"), _("off")},})
|
||||||
|
Dispatcher:registerAction("readest_sync_toggle_autosync", { category="none", event="ReadestSyncToggleAutoSync", title=_("Toggle auto readest sync"), reader=true,})
|
||||||
|
Dispatcher:registerAction("readest_sync_push_progress", { category="none", event="ReadestSyncPushProgress", title=_("Push readest progress from this device"), reader=true,})
|
||||||
|
Dispatcher:registerAction("readest_sync_pull_progress", { category="none", event="ReadestSyncPullProgress", title=_("Pull readest progress from other devices"), reader=true, separator=true,})
|
||||||
end
|
end
|
||||||
|
|
||||||
function ReadestSync:needsLogin()
|
function ReadestSync:onReaderReady()
|
||||||
return not self.settings.access_token or not self.settings.expires_at
|
if self.settings.auto_sync and self.settings.access_token then
|
||||||
or self.settings.expires_at < os.time() + 60
|
UIManager:nextTick(function()
|
||||||
end
|
self:pullBookConfig(false)
|
||||||
|
|
||||||
function ReadestSync:tryRefreshToken()
|
|
||||||
if self.settings.refresh_token and self.settings.expires_at
|
|
||||||
and self.settings.expires_at < os.time() - self.settings.expires_in / 2 then
|
|
||||||
local client = self:getSupabaseAuthClient()
|
|
||||||
client:refresh_token(self.settings.refresh_token, function(success, response)
|
|
||||||
if success then
|
|
||||||
self.settings.access_token = response.access_token
|
|
||||||
self.settings.refresh_token = response.refresh_token
|
|
||||||
self.settings.expires_at = response.expires_at
|
|
||||||
self.settings.expires_in = response.expires_in
|
|
||||||
G_reader_settings:saveSetting("readest_sync", self.settings)
|
|
||||||
else
|
|
||||||
logger.err("ReadestSync: Token refresh failed:", response or "Unknown error")
|
|
||||||
end
|
|
||||||
end)
|
end)
|
||||||
end
|
end
|
||||||
|
self:onDispatcherRegisterActions()
|
||||||
end
|
end
|
||||||
|
|
||||||
function ReadestSync:addToMainMenu(menu_items)
|
function ReadestSync:addToMainMenu(menu_items)
|
||||||
@@ -98,17 +89,14 @@ function ReadestSync:addToMainMenu(menu_items)
|
|||||||
text = _("Auto sync book configs"),
|
text = _("Auto sync book configs"),
|
||||||
checked_func = function() return self.settings.auto_sync end,
|
checked_func = function() return self.settings.auto_sync end,
|
||||||
callback = function()
|
callback = function()
|
||||||
self.settings.auto_sync = not self.settings.auto_sync
|
self:onReadestSyncToggleAutoSync()
|
||||||
if self.settings.auto_sync then
|
|
||||||
self:pullBookConfig(false)
|
|
||||||
end
|
|
||||||
end,
|
end,
|
||||||
separator = true,
|
separator = true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
text = _("Push book config now"),
|
text = _("Push book config now"),
|
||||||
enabled_func = function()
|
enabled_func = function()
|
||||||
return self.settings.access_token ~= nil
|
return self.settings.access_token ~= nil and self.ui.document ~= nil
|
||||||
end,
|
end,
|
||||||
callback = function()
|
callback = function()
|
||||||
self:pushBookConfig(true)
|
self:pushBookConfig(true)
|
||||||
@@ -117,7 +105,7 @@ function ReadestSync:addToMainMenu(menu_items)
|
|||||||
{
|
{
|
||||||
text = _("Pull book config now"),
|
text = _("Pull book config now"),
|
||||||
enabled_func = function()
|
enabled_func = function()
|
||||||
return self.settings.access_token ~= nil
|
return self.settings.access_token ~= nil and self.ui.document ~= nil
|
||||||
end,
|
end,
|
||||||
callback = function()
|
callback = function()
|
||||||
self:pullBookConfig(true)
|
self:pullBookConfig(true)
|
||||||
@@ -127,6 +115,29 @@ function ReadestSync:addToMainMenu(menu_items)
|
|||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function ReadestSync:needsLogin()
|
||||||
|
return not self.settings.access_token or not self.settings.expires_at
|
||||||
|
or self.settings.expires_at < os.time() + 60
|
||||||
|
end
|
||||||
|
|
||||||
|
function ReadestSync:tryRefreshToken()
|
||||||
|
if self.settings.refresh_token and self.settings.expires_at
|
||||||
|
and self.settings.expires_at < os.time() - self.settings.expires_in / 2 then
|
||||||
|
local client = self:getSupabaseAuthClient()
|
||||||
|
client:refresh_token(self.settings.refresh_token, function(success, response)
|
||||||
|
if success then
|
||||||
|
self.settings.access_token = response.access_token
|
||||||
|
self.settings.refresh_token = response.refresh_token
|
||||||
|
self.settings.expires_at = response.expires_at
|
||||||
|
self.settings.expires_in = response.expires_in
|
||||||
|
G_reader_settings:saveSetting("readest_sync", self.settings)
|
||||||
|
else
|
||||||
|
logger.err("ReadestSync: Token refresh failed:", response or "Unknown error")
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
function ReadestSync:getSupabaseAuthClient()
|
function ReadestSync:getSupabaseAuthClient()
|
||||||
if not self.settings.supabase_url or not self.settings.supabase_anon_key then
|
if not self.settings.supabase_url or not self.settings.supabase_anon_key then
|
||||||
return nil
|
return nil
|
||||||
@@ -596,12 +607,23 @@ function ReadestSync:pullBookConfig(interactive)
|
|||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
function ReadestSync:onReaderReady()
|
function ReadestSync:onReadestSyncToggleAutoSync(toggle)
|
||||||
if self.settings.auto_sync and self.settings.access_token then
|
if toggle == self.settings.auto_sync then
|
||||||
UIManager:nextTick(function()
|
return true
|
||||||
self:pullBookConfig(false)
|
|
||||||
end)
|
|
||||||
end
|
end
|
||||||
|
self.settings.auto_sync = not self.settings.auto_sync
|
||||||
|
G_reader_settings:saveSetting("readest_sync", self.settings)
|
||||||
|
if self.settings.auto_sync and self.ui.document then
|
||||||
|
self:pullBookConfig(false)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function ReadestSync:onReadestSyncPushProgress()
|
||||||
|
self:pushBookConfig(true)
|
||||||
|
end
|
||||||
|
|
||||||
|
function ReadestSync:onReadestSyncPullProgress()
|
||||||
|
self:pullBookConfig(true)
|
||||||
end
|
end
|
||||||
|
|
||||||
function ReadestSync:onCloseDocument()
|
function ReadestSync:onCloseDocument()
|
||||||
|
|||||||
Reference in New Issue
Block a user