[plugin] Wallabag: separate option to delete ‘on hold’ articles (#12722)

Before this change, on hold articles were deleted if `Remotely delete
finished articles` was enabled. To make this configurable new option
`Remotely delete on hold articles` has been added.

Fixes #12698.
This commit is contained in:
fenuks
2024-11-09 22:06:40 +00:00
committed by GitHub
parent 1f89f24e29
commit 06696ea913

View File

@@ -50,6 +50,7 @@ function Wallabag:init()
-- default values so that user doesn't have to explicitly set them -- default values so that user doesn't have to explicitly set them
self.is_delete_finished = true self.is_delete_finished = true
self.is_delete_read = false self.is_delete_read = false
self.is_delete_abandoned = false
self.is_auto_delete = false self.is_auto_delete = false
self.is_sync_remote_delete = false self.is_sync_remote_delete = false
self.is_archiving_deleted = true self.is_archiving_deleted = true
@@ -71,6 +72,9 @@ function Wallabag:init()
if self.wb_settings.data.wallabag.is_delete_finished ~= nil then if self.wb_settings.data.wallabag.is_delete_finished ~= nil then
self.is_delete_finished = self.wb_settings.data.wallabag.is_delete_finished self.is_delete_finished = self.wb_settings.data.wallabag.is_delete_finished
end end
if self.wb_settings.data.wallabag.is_delete_abandoned ~= nil then
self.is_delete_abandoned = self.wb_settings.data.wallabag.is_delete_abandoned
end
if self.wb_settings.data.wallabag.send_review_as_tags ~= nil then if self.wb_settings.data.wallabag.send_review_as_tags ~= nil then
self.send_review_as_tags = self.wb_settings.data.wallabag.send_review_as_tags self.send_review_as_tags = self.wb_settings.data.wallabag.send_review_as_tags
end end
@@ -99,6 +103,7 @@ function Wallabag:init()
self.articles_per_sync = self.wb_settings.data.wallabag.articles_per_sync self.articles_per_sync = self.wb_settings.data.wallabag.articles_per_sync
end end
self.remove_finished_from_history = self.wb_settings.data.wallabag.remove_finished_from_history or false self.remove_finished_from_history = self.wb_settings.data.wallabag.remove_finished_from_history or false
self.remove_abandoned_from_history = self.wb_settings.data.wallabag.remove_abandoned_from_history or false
self.download_original_document = self.wb_settings.data.wallabag.download_original_document self.download_original_document = self.wb_settings.data.wallabag.download_original_document
self.download_queue = self.wb_settings.data.wallabag.download_queue or {} self.download_queue = self.wb_settings.data.wallabag.download_queue or {}
@@ -151,7 +156,7 @@ function Wallabag:addToMainMenu(menu_items)
NetworkMgr:runWhenOnline(connect_callback) NetworkMgr:runWhenOnline(connect_callback)
end, end,
enabled_func = function() enabled_func = function()
return self.is_delete_finished or self.is_delete_read return self.is_delete_finished or self.is_delete_read or self.is_delete_abandoned
end, end,
}, },
{ {
@@ -277,6 +282,14 @@ function Wallabag:addToMainMenu(menu_items)
self.is_delete_read = not self.is_delete_read self.is_delete_read = not self.is_delete_read
self:saveSettings() self:saveSettings()
end, end,
},
{
text = _("Remotely delete articles on hold"),
checked_func = function() return self.is_delete_abandoned end,
callback = function()
self.is_delete_abandoned = not self.is_delete_abandoned
self:saveSettings()
end,
separator = true, separator = true,
}, },
{ {
@@ -339,6 +352,17 @@ function Wallabag:addToMainMenu(menu_items)
self.remove_read_from_history = not self.remove_read_from_history self.remove_read_from_history = not self.remove_read_from_history
self:saveSettings() self:saveSettings()
end, end,
},
{
text = _("Remove articles on hold from history"),
keep_menu_open = true,
checked_func = function()
return self.remove_abandoned_from_history or false
end,
callback = function()
self.remove_abandoned_from_history = not self.remove_abandoned_from_history
self:saveSettings()
end,
separator = true, separator = true,
}, },
{ {
@@ -820,7 +844,7 @@ function Wallabag:processLocalFiles(mode)
end end
local num_deleted = 0 local num_deleted = 0
if self.is_delete_finished or self.is_delete_read then if self.is_delete_finished or self.is_delete_read or self.is_delete_abandoned then
local info = InfoMessage:new{ text = _("Processing local files…") } local info = InfoMessage:new{ text = _("Processing local files…") }
UIManager:show(info) UIManager:show(info)
UIManager:forceRePaint() UIManager:forceRePaint()
@@ -836,11 +860,16 @@ function Wallabag:processLocalFiles(mode)
local summary = doc_settings:readSetting("summary") local summary = doc_settings:readSetting("summary")
local status = summary and summary.status local status = summary and summary.status
local percent_finished = doc_settings:readSetting("percent_finished") local percent_finished = doc_settings:readSetting("percent_finished")
if status == "complete" or status == "abandoned" then if status == "complete" then
if self.is_delete_finished then if self.is_delete_finished then
self:removeArticle(entry_path) self:removeArticle(entry_path)
num_deleted = num_deleted + 1 num_deleted = num_deleted + 1
end end
elseif status == "abandoned" then
if self.is_delete_abandoned then
self:removeArticle(entry_path)
num_deleted = num_deleted + 1
end
elseif percent_finished == 1 then -- 100% read elseif percent_finished == 1 then -- 100% read
if self.is_delete_read then if self.is_delete_read then
self:removeArticle(entry_path) self:removeArticle(entry_path)
@@ -1157,6 +1186,7 @@ function Wallabag:saveSettings()
auto_tags = self.auto_tags, auto_tags = self.auto_tags,
is_delete_finished = self.is_delete_finished, is_delete_finished = self.is_delete_finished,
is_delete_read = self.is_delete_read, is_delete_read = self.is_delete_read,
is_delete_abandoned = self.is_delete_abandoned,
is_archiving_deleted = self.is_archiving_deleted, is_archiving_deleted = self.is_archiving_deleted,
is_auto_delete = self.is_auto_delete, is_auto_delete = self.is_auto_delete,
is_sync_remote_delete = self.is_sync_remote_delete, is_sync_remote_delete = self.is_sync_remote_delete,
@@ -1235,12 +1265,15 @@ function Wallabag:onCloseDocument()
local document_full_path = self.ui.document.file local document_full_path = self.ui.document.file
local summary = self.ui.doc_settings:readSetting("summary") local summary = self.ui.doc_settings:readSetting("summary")
local status = summary and summary.status local status = summary and summary.status
local is_finished = status == "complete" or status == "abandoned" local is_finished = status == "complete"
local is_read = self:getLastPercent() == 1 local is_read = self:getLastPercent() == 1
local is_abandoned = status == "abandoned"
if document_full_path if document_full_path
and self.directory and self.directory
and ( (self.remove_finished_from_history and is_finished) or (self.remove_read_from_history and is_read) ) and ( (self.remove_finished_from_history and is_finished)
or (self.remove_read_from_history and is_read)
or (self.remove_abandoned_from_history and is_abandoned) )
and self.directory == string.sub(document_full_path, 1, string.len(self.directory)) then and self.directory == string.sub(document_full_path, 1, string.len(self.directory)) then
ReadHistory:removeItemByPath(document_full_path) ReadHistory:removeItemByPath(document_full_path)
self.ui:setLastDirForFileBrowser(self.directory) self.ui:setLastDirForFileBrowser(self.directory)