[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
self.is_delete_finished = true
self.is_delete_read = false
self.is_delete_abandoned = false
self.is_auto_delete = false
self.is_sync_remote_delete = false
self.is_archiving_deleted = true
@@ -71,6 +72,9 @@ function Wallabag:init()
if self.wb_settings.data.wallabag.is_delete_finished ~= nil then
self.is_delete_finished = self.wb_settings.data.wallabag.is_delete_finished
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
self.send_review_as_tags = self.wb_settings.data.wallabag.send_review_as_tags
end
@@ -99,6 +103,7 @@ function Wallabag:init()
self.articles_per_sync = self.wb_settings.data.wallabag.articles_per_sync
end
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_queue = self.wb_settings.data.wallabag.download_queue or {}
@@ -151,7 +156,7 @@ function Wallabag:addToMainMenu(menu_items)
NetworkMgr:runWhenOnline(connect_callback)
end,
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,
},
{
@@ -277,6 +282,14 @@ function Wallabag:addToMainMenu(menu_items)
self.is_delete_read = not self.is_delete_read
self:saveSettings()
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,
},
{
@@ -339,6 +352,17 @@ function Wallabag:addToMainMenu(menu_items)
self.remove_read_from_history = not self.remove_read_from_history
self:saveSettings()
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,
},
{
@@ -820,7 +844,7 @@ function Wallabag:processLocalFiles(mode)
end
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…") }
UIManager:show(info)
UIManager:forceRePaint()
@@ -836,11 +860,16 @@ function Wallabag:processLocalFiles(mode)
local summary = doc_settings:readSetting("summary")
local status = summary and summary.status
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
self:removeArticle(entry_path)
num_deleted = num_deleted + 1
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
if self.is_delete_read then
self:removeArticle(entry_path)
@@ -1157,6 +1186,7 @@ function Wallabag:saveSettings()
auto_tags = self.auto_tags,
is_delete_finished = self.is_delete_finished,
is_delete_read = self.is_delete_read,
is_delete_abandoned = self.is_delete_abandoned,
is_archiving_deleted = self.is_archiving_deleted,
is_auto_delete = self.is_auto_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 summary = self.ui.doc_settings:readSetting("summary")
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_abandoned = status == "abandoned"
if document_full_path
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
ReadHistory:removeItemByPath(document_full_path)
self.ui:setLastDirForFileBrowser(self.directory)