documentregistry: fix DocSettings (#10478)

reviewable/pr10498/r1
hius07 12 months ago committed by GitHub
parent a18afc24b8
commit 46578c0e12
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -2,6 +2,7 @@
This is a registry for document providers This is a registry for document providers
]]-- ]]--
local DocSettings = require("docsettings")
local logger = require("logger") local logger = require("logger")
local lfs = require("libs/libkoreader-lfs") local lfs = require("libs/libkoreader-lfs")
local util = require("util") local util = require("util")
@ -29,8 +30,7 @@ function DocumentRegistry:addProvider(extension, mimetype, provider, weight)
end end
function DocumentRegistry:getRandomFile(dir, opened, extension) function DocumentRegistry:getRandomFile(dir, opened, extension)
local DocSettings = require("docsettings") if dir:sub(-1) ~= "/" then
if string.sub(dir, string.len(dir)) ~= "/" then
dir = dir .. "/" dir = dir .. "/"
end end
local files = {} local files = {}
@ -38,8 +38,10 @@ function DocumentRegistry:getRandomFile(dir, opened, extension)
local ok, iter, dir_obj = pcall(lfs.dir, dir) local ok, iter, dir_obj = pcall(lfs.dir, dir)
if ok then if ok then
for entry in iter, dir_obj do for entry in iter, dir_obj do
if lfs.attributes(dir .. entry, "mode") == "file" and self:hasProvider(dir .. entry) local file = dir .. entry
and (opened == nil or DocSettings:hasSidecarFile(dir .. entry) == opened) local file_opened = DocSettings:hasSidecarFile(file) and true or false
if lfs.attributes(file, "mode") == "file" and self:hasProvider(file)
and (opened == nil or file_opened == opened)
and (extension == nil or extension[util.getFileNameSuffix(entry)]) then and (extension == nil or extension[util.getFileNameSuffix(entry)]) then
i = i + 1 i = i + 1
files[i] = entry files[i] = entry
@ -70,7 +72,6 @@ function DocumentRegistry:hasProvider(file, mimetype)
if self.filetype_provider[filename_suffix] or filetype_provider[filename_suffix] then if self.filetype_provider[filename_suffix] or filetype_provider[filename_suffix] then
return true return true
end end
local DocSettings = require("docsettings")
if DocSettings:hasSidecarFile(file) then if DocSettings:hasSidecarFile(file) then
return DocSettings:open(file):has("provider") return DocSettings:open(file):has("provider")
end end
@ -85,7 +86,6 @@ function DocumentRegistry:getProvider(file)
if providers then if providers then
-- provider for document -- provider for document
local DocSettings = require("docsettings")
if DocSettings:hasSidecarFile(file) then if DocSettings:hasSidecarFile(file) then
local doc_settings_provider = DocSettings:open(file):readSetting("provider") local doc_settings_provider = DocSettings:open(file):readSetting("provider")
if doc_settings_provider then if doc_settings_provider then
@ -176,9 +176,9 @@ function DocumentRegistry:setProvider(file, provider, all)
-- per-document -- per-document
if not all then if not all then
local DocSettings = require("docsettings"):open(file) local doc_settings = DocSettings:open(file)
DocSettings:saveSetting("provider", provider.provider) doc_settings:saveSetting("provider", provider.provider)
DocSettings:flush() doc_settings:flush()
-- global -- global
else else
local filetype_provider = G_reader_settings:readSetting("provider") or {} local filetype_provider = G_reader_settings:readSetting("provider") or {}

Loading…
Cancel
Save