Skip to content

Commit

Permalink
Register actions for book linking, enabling/disabling progress tracking
Browse files Browse the repository at this point in the history
  • Loading branch information
Billiam committed Dec 29, 2024
1 parent 265b6af commit d6638fe
Show file tree
Hide file tree
Showing 3 changed files with 76 additions and 30 deletions.
26 changes: 26 additions & 0 deletions lib/hardcover.lua
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,32 @@ function Hardcover:new(o)
return setmetatable(o, self)
end

function Hardcover:showLinkBookDialog(force_search, link_callback)
local search_value, books, err = self:findBookOptions(force_search)

if err then
logger.err(err)
return
end

self.dialog_manager:buildSearchDialog(
"Select book",
books,
{
book_id = self.settings:getLinkedBookId()
},
function(book)
self:linkBook(book)
link_callback(book)
end,
function(search)
self.dialog_manager:updateSearchResults(search)
return true
end,
search_value
)
end

function Hardcover:updateCurrentBookStatus(status, privacy_setting_id)
self.cache:updateBookStatus(self.ui.document.file, status, privacy_setting_id)
if not self.state.book_status.id then
Expand Down
25 changes: 3 additions & 22 deletions lib/ui/hardcover_menu.lua
Original file line number Diff line number Diff line change
Expand Up @@ -85,29 +85,10 @@ function HardcoverMenu:getSubMenuItems()
end

local force_search = self.settings:bookLinked()
local search_value, books, err = self.hardcover:findBookOptions(force_search)

if err then
logger.err(err)
return
end

self.dialog_manager:buildSearchDialog(
"Select book",
books,
{
book_id = self.settings:getLinkedBookId()
},
function(book)
self.hardcover:linkBook(book)
menu_instance:updateItems()
end,
function(search)
self.dialog_manager:updateSearchResults(search)
return true
end,
search_value
)
self.hardcover:showLinkBookDialog(force_search, function()
menu_instance:updateItems()
end)
end,
},
{
Expand Down
55 changes: 47 additions & 8 deletions main.lua
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,21 @@ function HardcoverApp:onDispatcherRegisterActions()
Dispatcher:registerAction("hardcover_link", {
category = "none",
event = "HardcoverLink",
title = _("Hardcover Link"),
title = _("Hardcover: Link book"),
general = true,
})

Dispatcher:registerAction("hardcover_track", {
category = "none",
event = "HardcoverTrack",
title = _("Hardcover: Track progress"),
general = true,
})

Dispatcher:registerAction("hardcover_stop_track", {
category = "none",
event = "HardcoverStopTrack",
title = _("Hardcover: Stop tracking progress"),
general = true,
})
end
Expand Down Expand Up @@ -85,13 +99,6 @@ function HardcoverApp:init()
settings = self.settings,
state = self.state
}
self.hardcover = Hardcover:new {
cache = self.cache,
dialog_manager = self.dialog_manager,
settings = self.settings,
state = self.state,
ui = self.ui,
}
self.page_mapper = PageMapper:new {
state = self.state,
ui = self.ui,
Expand All @@ -102,6 +109,14 @@ function HardcoverApp:init()
state = self.state,
ui = self.ui,
}
self.hardcover = Hardcover:new {
cache = self.cache,
dialog_manager = self.dialog_manager,
settings = self.settings,
state = self.state,
ui = self.ui,
}

self.menu = HardcoverMenu:new {
enabled = true,

Expand Down Expand Up @@ -130,6 +145,30 @@ function HardcoverApp:disable()
self:registerHighlight()
end

function HardcoverApp:onHardcoverLink()
self.hardcover:showLinkBookDialog(false, function(book)
UIManager:show(Notification:new {
text = _("Linked to: " .. book.title),
})
end)
end

function HardcoverApp:onHardcoverTrack()
self.settings:setSync(true)
UIManager:nextTick(function()
UIManager:show(Notification:new {
text = _("Progress tracking enabled")
})
end)
end

function HardcoverApp:onHardcoverStopTrack()
self.settings:setSync(false)
UIManager:show(Notification:new {
text = _("Progress tracking disabled")
})
end

function HardcoverApp:onSettingsChanged(field, change, original_value)
if field == SETTING.BOOKS then
local book_settings = change.config
Expand Down

0 comments on commit d6638fe

Please sign in to comment.