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

Loading…
Cancel
Save