History: update on renaming/moving a folder (#10999)

reviewable/pr11008/r1
hius07 8 months ago committed by GitHub
parent ee7a6455ce
commit 6ccf19b99f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -28,6 +28,7 @@ local ReadCollection = require("readcollection")
local ReaderDeviceStatus = require("apps/reader/modules/readerdevicestatus") local ReaderDeviceStatus = require("apps/reader/modules/readerdevicestatus")
local ReaderDictionary = require("apps/reader/modules/readerdictionary") local ReaderDictionary = require("apps/reader/modules/readerdictionary")
local ReaderWikipedia = require("apps/reader/modules/readerwikipedia") local ReaderWikipedia = require("apps/reader/modules/readerwikipedia")
local ReadHistory = require("readhistory")
local Screenshoter = require("ui/widget/screenshoter") local Screenshoter = require("ui/widget/screenshoter")
local TitleBar = require("ui/widget/titlebar") local TitleBar = require("ui/widget/titlebar")
local VerticalGroup = require("ui/widget/verticalgroup") local VerticalGroup = require("ui/widget/verticalgroup")
@ -893,7 +894,9 @@ function FileManager:pasteHere(file)
if self:moveFile(orig_file, dest_path) then if self:moveFile(orig_file, dest_path) then
if is_file then if is_file then
DocSettings:updateLocation(orig_file, dest_file) DocSettings:updateLocation(orig_file, dest_file)
require("readhistory"):updateItemByPath(orig_file, dest_file) -- (will update "lastfile" if needed) ReadHistory:updateItemByPath(orig_file, dest_file) -- (will update "lastfile" if needed)
else
ReadHistory:updateItemsByPath(orig_file, dest_file)
end end
ReadCollection:updateItemByPath(orig_file, dest_file) ReadCollection:updateItemByPath(orig_file, dest_file)
return true return true
@ -1016,7 +1019,7 @@ function FileManager:deleteFile(file, is_file)
if ok and not err then if ok and not err then
if is_file then if is_file then
DocSettings:updateLocation(file) DocSettings:updateLocation(file)
require("readhistory"):fileDeleted(file) ReadHistory:fileDeleted(file)
end end
ReadCollection:removeItemByPath(file, not is_file) ReadCollection:removeItemByPath(file, not is_file)
return true return true
@ -1065,7 +1068,9 @@ function FileManager:renameFile(file, basename, is_file)
if self:moveFile(file, dest) then if self:moveFile(file, dest) then
if is_file then if is_file then
DocSettings:updateLocation(file, dest) DocSettings:updateLocation(file, dest)
require("readhistory"):updateItemByPath(file, dest) -- (will update "lastfile" if needed) ReadHistory:updateItemByPath(file, dest) -- (will update "lastfile" if needed)
else
ReadHistory:updateItemsByPath(file, dest)
end end
ReadCollection:updateItemByPath(file, dest) ReadCollection:updateItemByPath(file, dest)
self:onRefresh() self:onRefresh()

@ -189,6 +189,7 @@ function ReadHistory:getFileByDirectory(directory, recursive)
end end
end end
--- Updates the history list after renaming/moving a file.
function ReadHistory:updateItemByPath(old_path, new_path) function ReadHistory:updateItemByPath(old_path, new_path)
local index = self:getIndexByFile(old_path) local index = self:getIndexByFile(old_path)
if index then if index then
@ -199,6 +200,22 @@ function ReadHistory:updateItemByPath(old_path, new_path)
end end
end end
--- Updates the history list after renaming/moving a folder.
function ReadHistory:updateItemsByPath(old_path, new_path)
old_path = "^"..old_path
local history_updated
for i, v in ipairs(self.hist) do
local file, count = v.file:gsub(old_path, new_path)
if count == 1 then
self.hist[i].file = file
history_updated = true
end
end
if history_updated then
self:_flush()
end
end
--- Updates the history list after deleting a file. --- Updates the history list after deleting a file.
function ReadHistory:fileDeleted(path) function ReadHistory:fileDeleted(path)
local index = self:getIndexByFile(path) local index = self:getIndexByFile(path)

Loading…
Cancel
Save