diff --git a/plugins/wallabag.koplugin/main.lua b/plugins/wallabag.koplugin/main.lua index 416eeb4d6..b5f6785f6 100644 --- a/plugins/wallabag.koplugin/main.lua +++ b/plugins/wallabag.koplugin/main.lua @@ -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)