From dc68e620af9333a048d62f918b558543d0fe6fd0 Mon Sep 17 00:00:00 2001 From: John O'Keefe Date: Mon, 1 Jun 2026 20:08:44 -0400 Subject: [PATCH] Use koreader_xpointer for GotoXPointer, fallback to percentage --- main.lua | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/main.lua b/main.lua index 11b25b4..86fc678 100644 --- a/main.lua +++ b/main.lua @@ -792,8 +792,11 @@ function Bookhoard:syncToProgress(progress, percentage) logger.dbg("Bookhoard: sync to progress", progress, percentage) if self.ui.document.info.has_pages then self.ui:handleEvent(Event:new("GotoPage", tonumber(progress))) - else + elseif progress and progress:match("^/body/") then self.ui:handleEvent(Event:new("GotoXPointer", progress)) + elseif percentage then + self.ui.document:gotoPercent(percentage * 100) + self.ui:handleEvent(Event:new("UpdatePos")) end end @@ -960,29 +963,31 @@ function Bookhoard:_doGetProgress(interactive) local self_older = server_percentage > percentage + local nav_target = progress.koreader_xpointer or progress.epubcfi or progress.page + if self_older then if self.settings.sync_forward == SYNC_STRATEGY.SILENT then - self:syncToProgress(progress.epubcfi or progress.page, server_percentage) + self:syncToProgress(nav_target, server_percentage) self:_showSyncedMessage() elseif self.settings.sync_forward == SYNC_STRATEGY.PROMPT then UIManager:show(ConfirmBox:new{ text = T(_("Sync to newer location %1%% from server?"), Math.round(server_percentage * 100)), ok_callback = function() - self:syncToProgress(progress.epubcfi or progress.page, server_percentage) + self:syncToProgress(nav_target, server_percentage) end, }) end else if self.settings.sync_backward == SYNC_STRATEGY.SILENT then - self:syncToProgress(progress.epubcfi or progress.page, server_percentage) + self:syncToProgress(nav_target, server_percentage) self:_showSyncedMessage() elseif self.settings.sync_backward == SYNC_STRATEGY.PROMPT then UIManager:show(ConfirmBox:new{ text = T(_("Sync to previous location %1%% from server?"), Math.round(server_percentage * 100)), ok_callback = function() - self:syncToProgress(progress.epubcfi or progress.page, server_percentage) + self:syncToProgress(nav_target, server_percentage) end, }) end