Skip to content
Open
Show file tree
Hide file tree
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
1 change: 1 addition & 0 deletions hardcover/lib/constants/settings.lua
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ local Settings = {
TRACK = {
FREQUENCY = "frequency",
PROGRESS = "progress",
CLOSE = "close",
},
USER_ID = "user_id",
}
Expand Down
4 changes: 4 additions & 0 deletions hardcover/lib/hardcover_settings.lua
Original file line number Diff line number Diff line change
Expand Up @@ -186,6 +186,10 @@ function HardcoverSettings:trackByProgress()
return self.settings:readSetting(SETTING.TRACK_METHOD) == SETTING.TRACK.PROGRESS
end

function HardcoverSettings:trackByClose()
return self.settings:readSetting(SETTING.TRACK_METHOD) == SETTING.TRACK.CLOSE
end

function HardcoverSettings:changeTrackPercentageInterval(percent)
self:updateSetting(SETTING.TRACK_PERCENTAGE, percent)
end
Expand Down
10 changes: 10 additions & 0 deletions hardcover/lib/ui/hardcover_menu.lua
Original file line number Diff line number Diff line change
Expand Up @@ -595,6 +595,16 @@ function HardcoverMenu:getTrackingSubMenuItems()
end,
keep_menu_open = true
},
{
text = "Update on document close",
radio = true,
checked_func = function()
return self.settings:readSetting(SETTING.TRACK_METHOD) == SETTING.TRACK.CLOSE
end,
callback = function()
self.settings:setTrackMethod(SETTING.TRACK.CLOSE)
end
},
}
end

Expand Down
23 changes: 16 additions & 7 deletions main.lua
Original file line number Diff line number Diff line change
Expand Up @@ -270,9 +270,6 @@ function HardcoverApp:onSettingsChanged(field, change, original_value)
end

function HardcoverApp:_handlePageUpdate(filename, mapped_page, immediate, callback)
--logger.warn("HARDCOVER: Throttled page update", mapped_page)
self.page_update_pending = false

if not self:syncFileUpdates(filename) then
return
end
Expand All @@ -287,6 +284,8 @@ function HardcoverApp:_handlePageUpdate(filename, mapped_page, immediate, callba
return
end

self.page_update_pending = false

local immediate_update = function()
self.wifi:withWifi(function()
local result = Api:updatePage(current_read.id, current_read.edition_id, mapped_page, current_read.started_at)
Expand Down Expand Up @@ -358,6 +357,9 @@ function HardcoverApp:pageUpdateEvent(page)
if last_compare ~= current_compare then
self:_handlePageUpdate(self.ui.document.file, mapped_page)
end
elseif self.settings:trackByClose() then
self.page_update_pending = true
self.state.pending_page_update = true
end
end

Expand Down Expand Up @@ -395,12 +397,9 @@ function HardcoverApp:cancelPendingUpdates()
self.page_update_pending = false
end

function HardcoverApp:onDocumentClose()
function HardcoverApp:onCloseDocument()
UIManager:unschedule(self.startCacheRead)

self:cancelPendingUpdates()
self.state.read_cache_started = false

if not self.state.book_status.id and not self.settings:syncEnabled() then
return
end
Expand All @@ -409,13 +408,23 @@ function HardcoverApp:onDocumentClose()
self:updatePageNow()
end

self:cancelPendingUpdates()
self.state.read_cache_started = false

self.process_page_turns = false
self.page_update_pending = false
self.state.book_status = {}
self.state.page_map = nil
self.state.pending_page_update = nil
end

function HardcoverApp:onSuspend()

if self.state.pending_page_update then
self:updatePageNow()
self.state.pending_page_update = nil
end

self:cancelPendingUpdates()

Scheduler:clear()
Expand Down