mirror of
https://github.com/koreader/koreader.git
synced 2025-12-13 20:36:53 +01:00
[plugin] Wallabag: Make remove from history consistent with deletion (#6320)
Finished is a specific status distinct from 100% read. Also reorganize the menus slightly. Closes <#6316>.
This commit is contained in:
@@ -144,6 +144,7 @@ function Wallabag:addToMainMenu(menu_items)
|
||||
callback_func = function()
|
||||
return nil
|
||||
end,
|
||||
separator = true,
|
||||
sub_item_table = {
|
||||
{
|
||||
text = _("Configure Wallabag server"),
|
||||
@@ -173,6 +174,7 @@ function Wallabag:addToMainMenu(menu_items)
|
||||
callback = function(touchmenu_instance)
|
||||
self:setDownloadDirectory(touchmenu_instance)
|
||||
end,
|
||||
separator = true,
|
||||
},
|
||||
{
|
||||
text_func = function()
|
||||
@@ -200,46 +202,55 @@ function Wallabag:addToMainMenu(menu_items)
|
||||
callback = function(touchmenu_instance)
|
||||
self:setIgnoreTags(touchmenu_instance)
|
||||
end,
|
||||
separator = true,
|
||||
},
|
||||
{
|
||||
text = _("Remotely delete finished articles"),
|
||||
checked_func = function() return self.is_delete_finished end,
|
||||
callback = function()
|
||||
self.is_delete_finished = not self.is_delete_finished
|
||||
self:saveSettings()
|
||||
end,
|
||||
},
|
||||
{
|
||||
text = _("Remotely delete 100% read articles"),
|
||||
checked_func = function() return self.is_delete_read end,
|
||||
callback = function()
|
||||
self.is_delete_read = not self.is_delete_read
|
||||
self:saveSettings()
|
||||
end,
|
||||
},
|
||||
{
|
||||
text = _("Mark as read instead of deleting"),
|
||||
checked_func = function() return self.is_archiving_deleted end,
|
||||
callback = function()
|
||||
self.is_archiving_deleted = not self.is_archiving_deleted
|
||||
self:saveSettings()
|
||||
end,
|
||||
},
|
||||
{
|
||||
text = _("Process deletions when downloading"),
|
||||
checked_func = function() return self.is_auto_delete end,
|
||||
callback = function()
|
||||
self.is_auto_delete = not self.is_auto_delete
|
||||
self:saveSettings()
|
||||
end,
|
||||
},
|
||||
{
|
||||
text = _("Synchronize remotely deleted files"),
|
||||
checked_func = function() return self.is_sync_remote_delete end,
|
||||
callback = function()
|
||||
self.is_sync_remote_delete = not self.is_sync_remote_delete
|
||||
self:saveSettings()
|
||||
end,
|
||||
text = _("Article deletion"),
|
||||
separator = true,
|
||||
sub_item_table = {
|
||||
{
|
||||
text = _("Remotely delete finished articles"),
|
||||
checked_func = function() return self.is_delete_finished end,
|
||||
callback = function()
|
||||
self.is_delete_finished = not self.is_delete_finished
|
||||
self:saveSettings()
|
||||
end,
|
||||
},
|
||||
{
|
||||
text = _("Remotely delete 100% read articles"),
|
||||
checked_func = function() return self.is_delete_read end,
|
||||
callback = function()
|
||||
self.is_delete_read = not self.is_delete_read
|
||||
self:saveSettings()
|
||||
end,
|
||||
separator = true,
|
||||
},
|
||||
{
|
||||
text = _("Mark as read instead of deleting"),
|
||||
checked_func = function() return self.is_archiving_deleted end,
|
||||
callback = function()
|
||||
self.is_archiving_deleted = not self.is_archiving_deleted
|
||||
self:saveSettings()
|
||||
end,
|
||||
separator = true,
|
||||
},
|
||||
{
|
||||
text = _("Process deletions when downloading"),
|
||||
checked_func = function() return self.is_auto_delete end,
|
||||
callback = function()
|
||||
self.is_auto_delete = not self.is_auto_delete
|
||||
self:saveSettings()
|
||||
end,
|
||||
},
|
||||
{
|
||||
text = _("Synchronize remotely deleted files"),
|
||||
checked_func = function() return self.is_sync_remote_delete end,
|
||||
callback = function()
|
||||
self.is_sync_remote_delete = not self.is_sync_remote_delete
|
||||
self:saveSettings()
|
||||
end,
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
text = _("Remove finished articles from history"),
|
||||
@@ -252,6 +263,18 @@ function Wallabag:addToMainMenu(menu_items)
|
||||
self:saveSettings()
|
||||
end,
|
||||
},
|
||||
{
|
||||
text = _("Remove 100% read articles from history"),
|
||||
keep_menu_open = true,
|
||||
checked_func = function()
|
||||
return self.remove_read_from_history or false
|
||||
end,
|
||||
callback = function()
|
||||
self.remove_read_from_history = not self.remove_read_from_history
|
||||
self:saveSettings()
|
||||
end,
|
||||
separator = true,
|
||||
},
|
||||
{
|
||||
text = _("Help"),
|
||||
keep_menu_open = true,
|
||||
@@ -1007,6 +1030,7 @@ function Wallabag:saveSettings()
|
||||
is_sync_remote_delete = self.is_sync_remote_delete,
|
||||
articles_per_sync = self.articles_per_sync,
|
||||
remove_finished_from_history = self.remove_finished_from_history,
|
||||
remove_read_from_history = self.remove_read_from_history,
|
||||
download_queue = self.download_queue,
|
||||
}
|
||||
self.wb_settings:saveSetting("wallabag", tempsettings)
|
||||
@@ -1079,9 +1103,19 @@ function Wallabag:addToDownloadQueue(article_url)
|
||||
end
|
||||
|
||||
function Wallabag:onCloseDocument()
|
||||
if self.remove_finished_from_history then
|
||||
if self.remove_finished_from_history or self.remove_read_from_history then
|
||||
local document_full_path = self.ui.document.file
|
||||
if document_full_path and self.directory and self:getLastPercent() == 1 and self.directory == string.sub(document_full_path, 1, string.len(self.directory)) then
|
||||
local is_finished
|
||||
if self.ui.status.settings.data.summary and self.ui.status.settings.data.summary.status then
|
||||
local status = self.ui.status.settings.data.summary.status
|
||||
is_finished = (status == "complete" or status == "abandoned")
|
||||
end
|
||||
local is_read = self:getLastPercent() == 1
|
||||
|
||||
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.directory == string.sub(document_full_path, 1, string.len(self.directory)) then
|
||||
ReadHistory:removeItemByPath(document_full_path)
|
||||
self.ui:setLastDirForFileBrowser(self.directory)
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user